Systems and methods for generation of customized media playlists

ABSTRACT

The present application is directed to methods and systems for providing social interaction within a customized media streaming service. In one aspect, the present application is directed to methods and systems for automated playlist generation based on social metadata. These systems allow for an internet media delivery service to learn about a listener&#39;s preferences, and changes in those preferences over time, without the listener being required to tell the service directly, but rather through social networking profiles and relationships to one or more similar or related users. This allows the service to immediately, without any input from the listener, play programming that is likely to be enjoyed by the listener. It also allows the service to learn about changes in a listener&#39;s preferences over time without requiring the user to actively express the preferences.

RELATED APPLICATIONS

The present application claims priority to and the benefit of U.S.Provisional Patent Application No. 61/513,411, entitled “Systems andMethods for Social Network Integrated Customized Media Delivery,” filedJul. 29, 2011, the entirety of which is hereby incorporated byreference.

FIELD OF THE INVENTION

The methods and systems described herein relate generally to customizedmedia delivery. In particular, the methods and systems described hereinrelate to customized media delivery including integration with socialnetworking and group interaction.

BACKGROUND OF THE INVENTION

Internet radio brought customized streaming media programming to users,providing the ability to make a personal virtual radio station. Thistechnology, pioneered by companies such as Pandora Media, Inc., ofOakland, Calif., allowed listeners to provide a seed, in the form of anartist, song, or genre, and generate a customized playlist based off theseed. During playback of music, the listener could rate a song up ordown, allowing similar songs to be added to or removed from thecustomized playlist. Over time, as more and more ratings wereincorporated, the playlists would reflect the listener's preferences.However, these systems require manual effort by the listener to set upan initial profile of preferences, and then they require feedback fromthe listener over time to refine (or change) the preferences used inprogramming music. The listener therefore needs to actively manage theirinternet radio service to get good results.

Furthermore, while conventional broadcast radio and even non-customizedinternet multicasting stations could reach hundreds of thousands oflisteners simultaneously, customized media streams were unicast toindividual listeners' devices. In an effort to provide some socialinteraction capabilities, service providers added the ability to shareplaylist seeds. For example, through the social networking siteFacebook, provided by Facebook, Inc. of Menlo Park, Calif., users ofPandora could “share” stations. Similar capabilities were available tousers of Grooveshark, provided by Escape Media Group, Inc. ofGainesville, Fla., via the social networking site Twitter, by Twitter,Inc. of San Francisco, Calif. However, rather than actually sharing astation, users were merely sharing a current snapshot of a playlist ormerely a seed reflecting the current state of a playlist. Those withwhom the station was “shared” would essentially create their own,identical stations, based on the seed or playlist. Subsequentmodifications to the original playlist by the original user would not bereflected in these copies, and modifications to the individual playlistsof the “sharing” users would not be reflected in the original playlistor any other “shared” playlist. Thus, real time social interaction wasnot possible, even as the remainder of the social networking spheremoved in this direction.

SUMMARY OF THE INVENTION

The present application is directed to methods and systems for providingsocial interaction within a customized media streaming service. In oneaspect, the present application is directed to methods and systems forautomated playlist generation based on social metadata. These systemsallow for an internet media delivery service to learn about a listener'spreferences, and changes in those preferences over time, without thelistener being required to tell the service directly, but rather throughsocial networking profiles and relationships to one or more similar orrelated users. This allows the service to immediately, without any inputfrom the listener, play programming that is likely to be enjoyed by thelistener. It also allows the service to learn about changes in alistener's preferences over time without requiring the user to activelyexpress the preferences.

These systems take advantage of the fact that it is now common forpeople to maintain profiles on social networks such as MySpace,Facebook, Myxer, and many others which contain information about theirinterests, hobbies, and specifically their musical and artistpreferences. The information is presented in many different forms, andmay include simple lists of favorite artists/musical genres, links toweb pages that feature particular artists/genres, widgets that featureparticular artists or genres, or plaintext comments or otherdescriptions that express a like or dislike of particular forms ofmusic. These profiles may be manually edited by users, when, forexample, a user crafts a specific profile section describing their“favorite musical artists”. In other embodiments, they may beautomatically created by a service such as a social network. An exampleof an automatically-created profile is a user profile on the websiteMyxer.com. Each user has a profile page that is created and accessiblevia a web browser that contains, among other things, a list of recentlydownloaded ringtones, MP3s, and other digital content for a user. Theserecently downloaded files may be considered media that the user has apositive preference for or “likes”. Another example is on Facebook,where if a user expresses a preference for a particular musical genre orartist through an online action (such as pressing a ‘like’ buttonprovided by the Facebook API), information about that preference may beautomatically made visible in their Facebook profile, regardless ofwhere on the web the user expressed that preference.

In one embodiment of this invention, a user of an internet mediadelivery service provides account information for a social networkprofile that they have created, or that has been created for them by asocial networking service. For example, the user may be prompted to‘sign in’ to the media deliver service using a public authentication APIprovided by a social network, such as the Facebook Connect API. Thisprovides access to the social network profile to the media deliveryservice, which may parse or scan the profile to retrieve and determinetraits of the user and/or relationships between the user and otherusers.

Even in cases where a user's social networking profile contains nodirectly-applicable preference information that can help makeprogramming decisions for their music, it is possible to intelligentlyprogram music for them based on the profiles of other people in theirsocial graph. In general, users of social networks are connected toother users through “links” intended to mimic the real-world connectionsbetween them. For example, it is common for users to have links to theirfriends, co-workers, and family members, and it is uncommon for links toexist between people who have no such relationship.

The systems discussed herein examine the set of users who are linked tothe listener, and determine which related or linked user or users arelikely to share some or all musical preferences with the listener.Several heuristics are used to make this determination. The heaviestweight is given to factors which have experimentally been shown tocorrelate with musical preferences. The weights may be dynamicallyadjusted over time as more data is received by the system regardingcorrelations between media preferences and user traits. For example, theservice can examine the profiles or two listeners who are known to havesimilar musical preferences. Factors in each user's profile that aresimilar are given a slight ‘boost’ in weight with regard to musicalpreferences.

In one aspect, the present application is directed to a method for mediaselection based on social metadata. The method includes receiving, by amedia server from a device of a first user, a request for a first itemof media. The method also includes retrieving, by the media server froma social network server, social metadata of the first user, the socialmetadata identifying at least one artist. The method further includesrequesting, by the media server from a recommendation server, a medialist based on the identified at least one artist. The method alsoincludes receiving, by the media server, the requested media list. Themethod further includes selecting, by the media server, the first itemof media from the modified media list, and transmitting, by the mediaserver to the device for presentation to the first user, anidentification of the selected first item of media.

In one embodiment of the method, the request for a first item of mediadoes not identify the at least one artist. In another embodiment, themethod includes presenting to the first user a list of artistscomprising the identified at least one artist; and receiving a selectionby the first user of the at least one artist. In yet another embodiment,the social metadata comprises identifications of one or more artists theuser has rated positively. In another embodiment, the social metadatacomprises identifications of one or more artists on which the user hascommented.

In some embodiments, the method includes requesting the media list basedon one or more items of media rated by the first user. In otherembodiments, the method includes receiving a request of the first userto join a group receiving a customized media playlist; and requestingthe media list based on the customized media playlist associated withthe group. In a further embodiment of the method, the customized mediaplaylist associated with the group comprises a media list based on oneor more artists identified by a user of the group and social metadata ofeach user of the group. In another further embodiment, the methodincludes modifying the customized media playlist associated with thegroup to remove one or more items of media responsive to negativeratings of the one or more items of media by the first user. In yetanother further embodiment, the method includes identifying, by themedia server, that a second user of the group has left the group; andrequesting, by the media server from the recommendation server, a secondmedia list based on the media list and social metadata of the remainingusers of the group.

In another aspect, the present disclosure is directed to a system formedia selection based on social metadata. The system includes a firstdevice comprising a media server, in communication with a device of afirst user. The first device is configured for receiving, from thedevice of the first user, a request for a first item of media; andretrieving, from a social network server, social metadata of the firstuser, the social metadata identifying at least one artist. The firstdevice is also configured for requesting, from a recommendation server,a media list based on the identified at least one artist; receiving therequested media list; selecting the first item of media from themodified media list; and transmitting, to the device of the first user,an identification of the selected first item of media.

In one embodiment of the system, the request for a first item of mediadoes not identify the at least one artist. In another embodiment of thesystem, the first device is further configured for presenting to thefirst user a list of artists comprising the identified at least oneartist; and receiving a selection by the first user of the at least oneartist. In another embodiment of the system, the social metadatacomprises identifications of one or more artists the user has ratedpositively. In yet another embodiment of the system, the social metadatacomprises identifications of one or more artists the user has commentedon.

In some embodiments of the system, the first device is furtherconfigured for requesting the media list based on one or more items ofmedia rated by the first user. In other embodiments of the system, thefirst device is further configured for receiving a request of the firstuser to join a group receiving a customized media playlist; andrequesting the media list based on the customized media playlistassociated with the group. In a further embodiment, the customized mediaplaylist associated with the group comprises a media list based on oneor more artists identified by a user of the group and social metadata ofeach user of the group. In another further embodiment, the first deviceis further configured for modifying the customized media playlistassociated with the group to remove one or more items of mediaresponsive to negative ratings of the one or more items of media by thefirst user. In still another further embodiment, the first device isfurther configured for identifying that a second user of the group hasleft the group; and requesting, from the recommendation server, a secondmedia list based on the media list and social metadata of the remainingusers of the group.

In yet another aspect, the present application is directed to a methodfor generating customized media playlists. The method includesreceiving, by a media server from a device of a first user, a request togenerate a customized media playlist, the request including anidentification of a first seed artist; and requesting, by the mediaserver from a recommendation server, a first media list of media of thefirst seed artist. The method also includes requesting, by the mediaserver from the recommendation server, a second media list of mediacompatible with the first seed artist. The method further includesrequesting, by the media server from the recommendation server, a thirdmedia list of media compatible with one or more items of the first medialist. The method also includes merging, by the media server, the firstmedia list, second media list, and third media list to generate a fourthmedia list. The method also includes selecting, by the media server, anitem of media from the fourth media list; and transmitting, by the mediaserver to the device of the first user, an identification of theselected item of media from the fourth media list.

In one embodiment, the method includes modifying the fourth media listresponsive to a positive or negative rating of an item of media in thefourth list by the first user. In another embodiment, the methodincludes requesting the third media list of media compatible with one ormore items of the first media list and a second one or more items ofmedia positively rated by the first user. In a further embodiment, thesecond one or more items of media positively rated by the first usercomprise one or more items of a previously generated customized mediaplaylist.

In some embodiments, the method includes requesting the third media listof media compatible with one or more items of the first media listselected in order from the first media list. In other embodiments, themethod includes filtering the list to remove one or more recentlyselected items of media, responsive to one or more business rules.

In one embodiment, the method includes receiving, by the media server,an identification of a second user to receive the identification of theselected item of media from the fourth media list; modifying the fourthmedia list, by the media server, responsive to a combination ofpreferences of the first user and second user; and transmitting anidentification of the selected item of media from the fourth media listto a device of the second user. In a further embodiment, the methodincludes retrieving positive and negative ratings of artists by each ofthe first user and second user; merging positive and negative ratingsfor each artist from the retrieved ratings to generate a combined scorefor each artist; comparing each combined score to a threshold; andmodifying the fourth media list to remove items of media by artists withcombined scores below the threshold. In another further embodiment, themethod includes retrieving positive and negative ratings of items ofmedia by each of the first user and second user; merging positive andnegative ratings for each item of media from the retrieved ratings togenerate a combined score for each item of media; comparing eachcombined score to a threshold; and modifying the fourth media list toremove items of media with combined scores below the threshold. In someembodiments, the method includes modifying the list to include in afirst position an item of media by the first seed artist.

In another aspect, the present disclosure is directed to a system forgenerating customized media playlists. The system includes a firstdevice comprising a media server, in communication with a device of afirst user. The first device is configured for receiving, from thedevice of the first user, a request to generate a customized mediaplaylist, the request including an identification of a first seedartist; and requesting, from a recommendation server, a first media listof media of the first seed artist. The first device is also configuredfor requesting, from the recommendation server, a second media list ofmedia compatible with the first seed artist; and requesting, from therecommendation server, a third media list of media compatible with oneor more items of the first media list. The first device is alsoconfigured for merging the first media list, second media list, andthird media list to generate a fourth media list; selecting an item ofmedia from the fourth media list; and transmitting, to the device of thefirst user, an identification of the selected item of media from thefourth media list.

In one embodiment, the first device is further configured for modifyingthe fourth media list responsive to a positive or negative rating of anitem of media in the fourth list by the first user. In anotherembodiment, the first device is further configured for requesting thethird media list of media compatible with one or more items of the firstmedia list and a second one or more items of media positively rated bythe first user. In a further embodiment, the second one or more items ofmedia positively rated by the first user comprise one or more items of apreviously generated customized media playlist.

In another embodiment, the first device is further configured forrequesting the third media list of media compatible with one or moreitems of the first media list selected in order from the first medialist. In yet another embodiment, the first device is further configuredfor filtering the list to remove one or more recently selected items ofmedia, responsive to one or more business rules.

In one embodiment, the first device is further configured for receivingan identification of a second user to receive the identification of theselected item of media from the fourth media list; modifying the fourthmedia list, responsive to a combination of preferences of the first userand second user; and transmitting an identification of the selected itemof media from the fourth media list to a device of the second user. In afurther embodiment, the first device is further configured forretrieving positive and negative ratings of artists by each of the firstuser and second user; merging positive and negative ratings for eachartist from the retrieved ratings to generate a combined score for eachartist; comparing each combined score to a threshold; and modifying thefourth media list to remove items of media by artists with combinedscores below the threshold. In another further embodiment, the firstdevice is further configured for retrieving positive and negativeratings of items of media by each of the first user and second user;merging positive and negative ratings for each item of media from theretrieved ratings to generate a combined score for each item of media;comparing each combined score to a threshold; and modifying the fourthmedia list to remove items of media with combined scores below thethreshold. In some embodiments, the first device is further configuredfor modifying the list to include in a first position an item of mediaby the first seed artist.

In another aspect, the present application is directed to systems andmethods for delivering a video stream or pseudostream on-demand and insynchronization with an already playing audio stream or pseudostream. Auser listening to audio may decide they wish to view a related video,such as a music video for a song, and may select to view the videoduring playback. Without requiring the user to open a differentapplication or website or restart playback of the song, the system maydynamically deliver video data at a starting playback point responsiveto a current playback of the audio. The video may be displayed to theuser, automatically in synchronization with the audio, withoutneedlessly consuming bandwidth during periods when the user does notwish to view the video.

The application describes a method for dynamically switching betweenplayback of various types of multimedia programming. The method includesreceiving, by a device of a user from a multimedia server, a first itemof audio content. The method also includes playing, by the device, thefirst item of audio content for the user. The method further includesrequesting, by the device, a second item of video content correspondingto the first item of video content. The method also includes receiving,by the device from the multimedia server, the second item ofcorresponding video content. The method also includes displaying, by thedevice in synchronization with the playback of the first item of audiocontent, the second item of corresponding video content.

In one embodiment, the method includes transmitting a request to themultimedia server, by the device, responsive to receiving a request ofthe user to display the video content during playback of the first itemof audio content. In another embodiment, the method includes receiving aplayback start time for the second item of corresponding video contentfrom the multimedia server, the playback start time allowing display ofthe second item of corresponding video content in synchronization withthe playback of the first item of audio content.

In some embodiments, the second item of video content is received withthe first item of audio content, prior to a request of the user todisplay the video content. In other embodiments, the first item of audiocontent and second item of video content comprise a multimediaadvertisement. In a further embodiment, the method includes determiningthat the user is viewing a display of the device, and requesting thesecond item of video content or displaying the second item ofcorresponding video content is performed responsive to thedetermination. In a further embodiment, determining that the user isviewing a display of the device includes determining that the display ofthe device is on. In yet another embodiment, the method includesreceiving, by the device from the multimedia server, a banneradvertisement corresponding to the multimedia advertisement; anddisplaying the banner advertisement during playback of a subsequent itemof audio or video content.

In another aspect, the present application is directed to a system fordynamically switching between playback of various types of multimediaprogramming. The system includes a device of a user receiving, from amultimedia server, a first item of audio content. The device isconfigured for playing the first item of audio content for the user. Thedevice is also configured for requesting a second item of video contentcorresponding to the first item of video content. The device is furtherconfigured for receiving, from the multimedia server, the second item ofcorresponding video content. The device is also configured fordisplaying, in synchronization with the playback of the first item ofaudio content, the second item of corresponding video content.

In one embodiment, the device is also configured for transmitting arequest to the multimedia server, responsive to receiving a request ofthe user to display the video content during playback of the first itemof audio content. In another embodiment, the device is configured forreceiving a playback start time for the second item of correspondingvideo content from the multimedia server, the playback start timeallowing display of the second item of corresponding video content insynchronization with the playback of the first item of audio content.

In some embodiments, the second item of video content is received withthe first item of audio content, prior to a request of the user todisplay the video content. In other embodiments, the first item of audiocontent and second item of video content comprise a multimediaadvertisement. In a further embodiment, the device is also configuredfor determining that the user is viewing a display of the device, andrequesting the second item of video content or displaying the seconditem of corresponding video content is performed responsive to thedetermination. In a further embodiment, the device is configured fordetermining that the display of the device is on. In yet anotherembodiment, the device is also configured for receiving, from themultimedia server, a banner advertisement corresponding to themultimedia advertisement; and displaying the banner advertisement duringplayback of a subsequent item of audio or video content.

In yet another aspect, the present application is directed to systemsand methods for simultaneous and synchronized customized media deliveryto a plurality of users. A media provider may maintain a timeline andcurrent playback time of media displayed on user devices. When a newuser joins the customized media station, the provider may provide filesfor playback, along with an identifier of the current playback time. Thenew user's device may start playing the current file at the currentplayback time, in approximate synchronization with users already viewingor listening to media of the customized media playlist. The presentapplication describes a method for providing synchronized playback ofmedia to a plurality of users. The method includes receiving, by acontroller executed by a computing device, a first request from a firstdevice of a first user for an item of media of a customized mediaplaylist. The method also includes transmitting, by the controller tothe first device, an identification of the item of media and a playbackstart time for the item of media. The method further includes receiving,by the controller, a subsequent second request from a second device of asecond user for the item of media. The method also includestransmitting, by the controller to the second device, an identificationof the item of media and the playback start time transmitted to thefirst device for the item of media, wherein the first device and seconddevice output the item of media in substantial synchronization accordingto the playback start time.

In one embodiment of the method, the first request does not specify theitem of media, and the method further includes selecting, by thecontroller, the item of media from the customized media playlist. Inanother embodiment, the method includes transmitting a uniform resourcelocator (URL) for the item of media, an identification of a current timeof the controller, and an identification of the playback start time. Instill another embodiment of the method the subsequent second requestdoes not specify the item of media, and the method includes receiving anidentification of the first user or a group comprising the first user.In a further embodiment, the method includes selecting, by thecontroller, the item of media from the customized media playlist,responsive to receiving the identification of the first user or groupcomprising the first user.

In some embodiments, the method includes transmitting an identificationof an offset time within the item of media to start playback. In otherembodiments, the method includes determining, by the controllerresponsive to receiving the subsequent second request, that a currenttime is less than the playback start time for the item of media plus alength of the item of media, and wherein transmitting the identificationof the item of media and the playback start time to the second device isperformed responsive to the determination.

In one embodiment, the method includes receiving, by the controller, arequest of the first user or the second user to skip the item of media.The method also includes identifying, by the controller, a second itemof media of the customized media playlist. The method further includestransmitting, by the controller to each of the first device and seconddevice, an identification of the second item of media and a playbackstart time for the second item of media. In a further embodiment, themethod includes receiving, by the controller from each of the firstdevice and second device, a playback status request, and transmittingthe identification of the second item of media and the playback starttime for the second item of media to each of the first device and seconddevice is performed responsive to receiving the playback status requestfrom the corresponding device. In another further embodiment, the methodincludes transmitting, responsive to receiving the request to skip theitem of media, by the controller to the other of the first user or thesecond user, a request to select to confirm or cancel skipping the itemof media. The method also includes receiving, by the controller from theother of the first user or the second user, a confirmation to skip theitem of media, and transmitting the identification of the second item ofmedia is performed responsive to receiving the confirmation.

In another aspect, the present application is directed to a system forproviding synchronized playback of multimedia to a plurality of users.The system includes a computing device executing a controller incommunication with a first device of a first user and a second device ofa second user. The controller is configured for receiving a firstrequest from the first device for an item of media of a customized mediaplaylist. The controller is also configured for transmitting, to thefirst device, an identification of the item of media and a playbackstart time for the item of media. The controller is further configuredfor receiving a subsequent second request from a second device of asecond user for the item of media, and transmitting, to the seconddevice, an identification of the item of media and the playback starttime transmitted to the first device for the item of media, wherein thefirst device and second device output the item of media in substantialsynchronization according to the playback start time.

In one embodiment of the system, the first request does not specify theitem of media, and the controller is further configured for selectingthe item of media from the customized media playlist. In anotherembodiment of the system, the controller is further configured fortransmitting a uniform resource locator (URL) for the item of media, anidentification of a current time of the controller, and anidentification of the playback start time to each of the first deviceand the second device. In yet another embodiment of the system, thesubsequent second request does not specify the item of media and thecontroller is further configured for receiving, from the second device,an identification of the first user or a group comprising the firstuser. In a further embodiment, the controller is further configured forselecting the item of media from the customized media playlist,responsive to receiving the identification of the first user or groupcomprising the first user.

In some embodiments of the system, the controller is further configuredfor transmitting an identification of an offset time within the item ofmedia to start playback to each of the first device and the seconddevice. In other embodiments of the system, the controller is furtherconfigured for determining, responsive to receiving the subsequentsecond request, that a current time is less than the playback start timefor the item of media plus a length of the item of media, andtransmitting the identification of the item of media and the playbackstart time to the second device is performed responsive to thedetermination.

In one embodiment, the controller is further configured for receiving arequest of the first user or the second user to skip the item of media;identifying second item of media of the customized media playlist; andtransmitting, to each of the first device and second device, anidentification of the second item of media and a playback start time forthe second item of media. In a further embodiment, the controller isfurther configured for receiving, from each of the first device andsecond device, a playback status request, and transmitting theidentification of the second item of media and the playback start timefor the second item of media to each of the first device and seconddevice is performed responsive to receiving the playback status requestfrom the corresponding device. In another further embodiment, thecontroller is further configured for transmitting, responsive toreceiving the request of the first user or the second user to skip theitem of media, to the other of the first user or the second user, arequest for the corresponding user to select to confirm or cancelskipping the item of media, and receiving, by the controller, aconfirmation to skip the item of media; and transmitting theidentification of the second item of media is performed responsive toreceiving the confirmation.

In yet another aspect, the present disclosure is directed to a methodfor providing social interaction in a customized media playlist. Themethod includes receiving, by a media server, from a first device of afirst user, an identifier of a first item of media content and a firstdata file. The method also includes generating, by the media server, fora second user, a customized media playlist, the customized mediaplaylist comprising the first item of media content. The method furtherincludes transmitting, by the media server to a second device of thesecond user, the first item of media content and the first data file.

In one embodiment of the method, the first data file comprises apersonal message from the first user regarding the first item of mediacontent. In another embodiment, the method includes transmitting thefirst item of media content and an indication of the first data file;receiving a request of the second user for the first data file; andtransmitting the first data file to the second device.

In some embodiments of the method, transmitting the data file to thesecond device of the second user is performed responsive to identifyingan association between the first user and the second user in a socialnetworking system. In other embodiments, transmitting the data file tothe second device of the second user is performed responsive toidentifying the second user, by the first user. In one embodiment, thefirst data file comprises a textual message, and the method includestransmitting the first item of media content and the first data filecomprises transmitting the first item of media content and the firstdata file for simultaneous display by the second device. In anotherembodiment, the first data file comprises a media file, and the methodincludes transmitting the first item of media content and the first datafile comprises transmitting the first item of media content and thefirst data file for subsequent playback by the second device.

In another aspect, the present disclosure is directed to a system forproviding social interaction in a customized media playlist. The systemincludes a device comprising a media server in communication with afirst device of a first user and a second device of a second user. Themedia server is configured for receiving, from the first device of afirst user, an identifier of a first item of media content and a firstdata file. The media server is also configured for generating acustomized media playlist for the second user, the customized mediaplaylist comprising the first item of media content. The media server isalso configured for transmitting, to the second device of the seconduser, the first item of media content and the first data file.

In some embodiments of the system, the first data file comprises apersonal message from the first user regarding the first item of mediacontent. In other embodiments of the system, the media server isconfigured for transmitting the data file to the second device of thesecond user responsive to identifying an association between the firstuser and the second user in a social networking system. In still otherembodiments, the media server is configured for transmitting the datafile to the second device of the second user responsive to identifyingthe second user, by the first user. In yet still other embodiments, thefirst data file comprises a media file, and the media server isconfigured for transmitting the first item of media content and thefirst data file for subsequent playback by the second device.

In still another aspect, the present application is directed to systemsand methods for simultaneous group customization and collaboration ofpreferences for a customized media playlist. Users consuming acustomized media playlist simultaneously may provide individual userpreferences regarding items of media content, and the media provider maycustomize the media list responsive to democratic polling or voting ofthe users.

The details of various embodiments of the invention are set forth in theaccompanying drawings and the description below.

BRIEF DESCRIPTION OF THE FIGURES

The foregoing and other objects, aspects, features, and advantages ofthe invention will become more apparent and better understood byreferring to the following description taken in conjunction with theaccompanying drawings, in which:

FIG. 1A is a block diagram illustrative of an embodiment of a networkedenvironment useful for the systems and methods described in thisdocument;

FIG. 1B is a block diagram illustrative of a certain embodiment of acomputing machine for practicing the methods and systems describedherein;

FIG. 1C is a block diagram illustrative of another embodiment of acomputing machine for practicing the methods and systems describedherein;

FIG. 2A is a block diagram of an embodiment of a system for providing asocially-interactive media streaming service;

FIG. 2B depicts an embodiment of an interface provided by a client agentexecuting on a client device;

FIG. 3A depicts an embodiment of an interface provided by a client agentthat displays available stations;

FIG. 3B depicts an embodiment of an interface provided by a client agentthat displays additional information pertaining to a station selected bythe user;

FIG. 3C depicts an embodiment of an interface provided by a client agentthat allows a user to create a new station;

FIG. 3D depicts additional exemplary embodiments of interfaces;

FIG. 4 is a flowchart depicting an embodiment of a method of customizedmedia playlist generation and delivery;

FIG. 5A is a Venn diagram depicting an embodiment of a plurality ofusers with overlapping or shared traits;

FIG. 5B is a table listing an embodiment of traits and profileinformation for comparing user traits;

FIG. 5C is a flow chart of a method of identifying and weighting similarusers;

FIG. 6A is a table depicting an embodiment of a candidate list of mediasimilar to a seed item of media;

FIG. 6B is a block diagram of an embodiment of multiplexing a pluralityof candidate lists;

FIG. 7 is a diagrammatic view of an embodiment of a method of adding andremoving items from a candidate list;

FIG. 8 is a flow chart of an embodiment of a method of generating arecommendation list for a requesting user based on media preferences ofusers related to the requesting user;

FIG. 9 is a flow chart of an embodiment of selecting an item of mediafrom a recommendation list;

FIG. 10A is a diagrammatic view of an embodiment of a station timelinewith inserted content;

FIG. 10B is a diagrammatic view of embodiments of a station timelinewith subsequent playback of inserted content;

FIG. 10C is a diagrammatic view of an embodiment of a station timelinewith simultaneous playback of inserted content;

FIG. 11 is a table listening embodiments of methods of adjusting weightsof a candidate list and related user responsive to user preferences ofan item of media;

FIG. 12A is a diagrammatic view of an embodiment of a station timelinewith simultaneous audio and video playback;

FIG. 12B is a flowchart depicting one embodiment of the steps taken todynamically enable video playback for a user;

FIG. 13A is a diagrammatic view of an embodiment of a station timelineand playback timer for simultaneous synchronized consumption by aplurality of users;

FIG. 13B is a signal flow diagram of an embodiment of providingsynchronized playback of media to a plurality of users;

FIG. 13C is a flow chart of an embodiment of a method for providingsynchronized playback of media to a plurality of users; and

FIG. 13D is a flow chart of an embodiment of a method for playlistgeneration and modification and media selection based on social metadataand user preferences.

The features and advantages of the present invention will become moreapparent from the detailed description set forth below when taken inconjunction with the drawings, in which like reference charactersidentify corresponding elements throughout. In the drawings, likereference numbers generally indicate identical, functionally similar,and/or structurally similar elements.

DETAILED DESCRIPTION OF THE INVENTION

FIG. 1A illustrates one embodiment of a networked environment 101 inwhich a customized, media streaming service can be provided. As shown inFIG. 1A, the networked environment 101 includes one or more clientmachines 102A-102N (generally referred to herein as “client machine(s)102” or “client(s) 102”) in communication with one or more servers106A-106N (generally referred to herein as “server machine(s) 106” or“server(s) 106”) over a network 104. The client machine(s) 102 can, insome embodiments, be referred to as a single client machine 102 or asingle group of client machines 102, while server(s) 106 may be referredto as a single server 106 or a single group of servers 106. Althoughfour client machines 102 and four server machines 106 are depicted inFIG. 1A, any number of clients 102 may be in communication with anynumber of servers 106. In one embodiment a single client machine 102communicates with more than one server 106, while in another embodimenta single server 106 communicates with more than one client machine 102.In yet another embodiment, a single client machine 102 communicates witha single server 106. Further, although a single network 104 is shownconnecting client machines 102 to server machines 106, it should beunderstood that multiple, separate networks may connect a subset ofclient machines 102 to a subset of server machines 106.

In one embodiment, the computing environment 101 can include anappliance (not shown in FIG. 1A) installed between the server(s) 106 andclient machine(s) 102. This appliance can mange client/serverconnections, and in some cases can load balance connections made byclient machines 102 to server machines 106. Suitable appliances aremanufactured by any one of the following companies: the Citrix SystemsInc. Application Networking Group; Silver Peak Systems, Inc, both ofSanta Clara, Calif.; Riverbed Technology, Inc. of San Francisco, Calif.;F5 Networks, Inc. of Seattle, Wash.; or Juniper Networks, Inc. ofSunnyvale, Calif.

Clients 102 and server 106 may be provided as a computing device 100, aspecific embodiment of which is illustrated in FIG. 1B. Included withinthe computing device 100 is a system bus 150 that communicates with thefollowing components: a central processing unit 121; a main memory 122;storage memory 128; an input/output (I/O) controller 123; displaydevices 124A-124N; an installation device 116; and a network interface118. In one embodiment, the storage memory 128 includes: an operatingsystem, software routines, and a client agent 120. The I/O controller123, in some embodiments, is further connected one or more inputdevices. As shown in FIG. 1B, the I/O controller 123 is connected to acamera 125, a keyboard 126, a pointing device 127, and a microphone 129.

Embodiments of the computing machine 100 can include a centralprocessing unit 121 characterized by any one of the following componentconfigurations: logic circuits that respond to and process instructionsfetched from the main memory unit 122; a microprocessor unit, such as:those manufactured by Intel Corporation; those manufactured by MotorolaCorporation; those manufactured by Transmeta Corporation of Santa Clara,Calif.; the RS/6000 processor such as those manufactured byInternational Business Machines; a processor such as those manufacturedby Advanced Micro Devices; or any other combination of logic circuits.Still other embodiments of the central processing unit 122 may includeany combination of the following: a microprocessor, a microcontroller, acentral processing unit with a single processing core, a centralprocessing unit with two processing cores, or a central processing unitwith more than one processing core.

While FIG. 1B illustrates a computing device 100 that includes a singlecentral processing unit 121, in some embodiments the computing device100 can include one or more processing units 121. In these embodiments,the computing device 100 may store and execute firmware or otherexecutable instructions that, when executed, direct the one or moreprocessing units 121 to simultaneously execute instructions or tosimultaneously execute instructions on a single piece of data. In otherembodiments, the computing device 100 may store and execute firmware orother executable instructions that, when executed, direct the one ormore processing units to each execute a section of a group ofinstructions. For example, each processing unit 121 may be instructed toexecute a portion of a program or a particular module within a program.

In some embodiments, the processing unit 121 can include one or moreprocessing cores. For example, the processing unit 121 may have twocores, four cores, eight cores, etc. In one embodiment, the processingunit 121 may comprise one or more parallel processing cores. Theprocessing cores of the processing unit 121 may in some embodimentsaccess available memory as a global address space, or in otherembodiments, memory within the computing device 100 can be segmented andassigned to a particular core within the processing unit 121. In oneembodiment, the one or more processing cores or processors in thecomputing device 100 can each access local memory. In still anotherembodiment, memory within the computing device 100 can be shared amongstone or more processors or processing cores, while other memory can beaccessed by particular processors or subsets of processors. Inembodiments where the computing device 100 includes more than oneprocessing unit, the multiple processing units can be included in asingle integrated circuit (IC). These multiple processors, in someembodiments, can be linked together by an internal high speed bus, whichmay be referred to as an element interconnect bus.

In embodiments where the computing device 100 includes one or moreprocessing units 121, or a processing unit 121 including one or moreprocessing cores, the processors can execute a single instructionsimultaneously on multiple pieces of data (SIMD), or in otherembodiments can execute multiple instructions simultaneously on multiplepieces of data (MIMD). In some embodiments, the computing device 100 caninclude any number of SIMD and MIMD processors.

The computing device 100, in some embodiments, can include a graphicsprocessor or a graphics processing unit (not shown). The graphicsprocessing unit can include any combination of software and hardware,and can further input graphics data and graphics instructions, render agraphic from the inputted data and instructions, and output the renderedgraphic. In some embodiments, the graphics processing unit can beincluded within the processing unit 121. In other embodiments, thecomputing device 100 can include one or more processing units 121, whereat least one processing unit 121 is dedicated to processing andrendering graphics.

One embodiment of the computing device 100 provides support for any oneof the following installation devices 116: a CD-ROM drive, a CD-R/RWdrive, a DVD-ROM drive, tape drives of various formats, USB device, abootable medium, a bootable CD, a bootable CD for GNU/Linux distributionsuch as KNOPPIX®, a hard-drive or any other device suitable forinstalling applications or software. Applications can in someembodiments include a client agent 120, or any portion of a client agent120. The computing device 100 may further include a storage device 128that can be either one or more hard disk drives, or one or moreredundant arrays of independent disks; where the storage device isconfigured to store an operating system, software, programsapplications, or at least a portion of the client agent 120. A furtherembodiment of the computing device 100 includes an installation device116 that is used as the storage device 128.

Embodiments of the computing device 100 include any one of the followingI/O devices 130A-130N: a camera 125, keyboard 126; a pointing device127; a microphone 129; mice; trackpads; an optical pen; trackballs;microphones; drawing tablets; video displays; speakers; inkjet printers;laser printers; and dye-sublimation printers; touch screen; or any otherinput/output device able to perform the methods and systems describedherein. An I/O controller 123 may in some embodiments connect tomultiple I/O devices 130A-130N to control the one or more I/O devices.Some embodiments of the I/O devices 130A-130N may be configured toprovide storage or an installation medium 116, while others may providea universal serial bus (USB) interface for receiving USB storage devicessuch as the USB Flash Drive line of devices manufactured by TwintechIndustry, Inc. Still other embodiments include an I/O device 130 thatmay be a bridge between the system bus 150 and an external communicationbus, such as: a USB bus; an Apple Desktop Bus; an RS-232 serialconnection; a SCSI bus; a FireWire bus; a FireWire 800 bus; an Ethernetbus; a Thunderbolt or LightPeak bus; an AppleTalk bus; a GigabitEthernet bus; an Asynchronous Transfer Mode bus; a HIPPI bus; a SuperHIPPI bus; a SerialPlus bus; a SCI/LAMP bus; a FibreChannel bus; or aSerial Attached small computer system interface bus.

In some embodiments, the computing machine 100 can execute any operatingsystem, while in other embodiments the computing machine 100 can executeany of the following operating systems: versions of the MICROSOFTWINDOWS operating systems such as WINDOWS 3.x; WINDOWS 95; WINDOWS 98;WINDOWS 2000; WINDOWS NT 3.51; WINDOWS NT 4.0; WINDOWS CE; WINDOWS XP;WINDOWS VISTA; WINDOWS 7; WINDOWS MOBILE; and WINDOWS 8; the differentreleases of the Unix and Linux operating systems; any version of the MACOS manufactured by Apple Computer; OS/2, manufactured by InternationalBusiness Machines; any embedded operating system; any real-timeoperating system; any open source operating system; any proprietaryoperating system; any operating systems for mobile computing devices; orany other operating system. In still another embodiment, the computingmachine 100 can execute multiple operating systems. For example, thecomputing machine 100 can execute PARALLELS or another virtualizationplatform that can execute or manage a virtual machine executing a firstoperating system, while the computing machine 100 executes a secondoperating system different from the first operating system.

The computing machine 100 can be embodied in any one of the followingcomputing devices: a computing workstation; a desktop computer; a laptopor notebook computer; a server; a handheld computer; a mobile telephone;a portable telecommunication device; a media playing device; a gamingsystem; a mobile computing device; a netbook; a device of the IPODfamily of devices manufactured by Apple Computer; any one of thePLAYSTATION family of devices manufactured by the Sony Corporation; anyone of the Nintendo family of devices manufactured by Nintendo Co; anyone of the XBOX family of devices manufactured by the MicrosoftCorporation; or any other type and/or form of computing,telecommunications or media device that is capable of communication andthat has sufficient processor power and memory capacity to perform themethods and systems described herein.

In other embodiments the computing machine 100 can be a mobile devicesuch as any one of the following mobile devices: a JAVA-enabled cellulartelephone or personal digital assistant (PDA), such as the i55sr, i58sr,i85s, i88s, i90c, i95cl, or the im1100, all of which are manufactured byMotorola Corp; the 6035 or the 7135, manufactured by Kyocera; the i300or i330, manufactured by Samsung Electronics Co., Ltd; the TREO 180,270, 600, 650, 680, 700p, 700w, or 750 smart phone manufactured by Palm,Inc; any computing device that has different processors, operatingsystems, and input devices consistent with the device; or any othermobile computing device capable of performing the methods and systemsdescribed herein. In still other embodiments, the computing device 100can be any one of the following mobile computing devices: any one seriesof Blackberry, or other handheld device manufactured by Research InMotion Limited; the iPhone manufactured by Apple Computer; Palm Pre; aPocket PC; a Pocket PC Phone; or any other handheld mobile device. Inyet still other embodiments, the computing device 100 may a smart phoneor tablet computer, including products such as the iPhone or iPadmanufactured by Apple, Inc. of Cupertino, Calif.; the BlackBerry devicesmanufactured by Research in Motion, Ltd. of Waterloo, Ontario, Canada;Windows Mobile devices manufactured by Microsoft Corp., of Redmond,Wash.; the Xoom manufactured by Motorola, Inc. of Libertyville, Ill.;the Galaxy Tab family of devices manufactured by Samsung Electronics Co.of Korea; devices capable of running the Android platform provided byGoogle, Inc. of Mountain View, Calif.; or any other type and form ofportable computing device.

In still other embodiments, the computing device 100 can be a virtualmachine. The virtual machine can be any virtual machine managed by ahypervisor developed by XenSolutions, Citrix Systems, IBM, VMware, orany other hypervisor. In still other embodiments, the virtual machinecan be managed by a hypervisor executing on a server 106 or a hypervisorexecuting on a client 102.

In still other embodiments, the computing device 100 can in someembodiments execute, operate or otherwise provide an application thatcan be any one of the following: software; an application or program;executable instructions; a virtual machine; a hypervisor; a web browser;a web-based client; a client-server application; an ActiveX control; aJava applet; software related to voice over internet protocol (VoIP)communications like a soft IP telephone; an application for streamingvideo and/or audio or receiving and playing streamed video and/or audio;an application for facilitating real-time-data communications; a HTTPclient; a FTP client; or any other set of executable instructions. Stillother embodiments include a client device 102 that displays applicationoutput generated by an application remotely executing on a server 106 orother remotely located machine. In these embodiments, the client device102 can display the application output in an application window, abrowser, or other output window.

The computing device 100 may further include a network interface 118 tointerface to a Local Area Network (LAN), Wide Area Network (WAN) or theInternet through a variety of connections including, but not limited to,standard telephone lines, LAN or WAN links (e.g., 802.11, T1, T3, 56 kb,X.25, SNA, DECNET), broadband connections (e.g., ISDN, Frame Relay, ATM,Gigabit Ethernet, Ethernet-over-SONET), wireless connections, or somecombination of any or all of the above. Connections can also beestablished using a variety of communication protocols (e.g., TCP/IP,IPX, SPX, NetBIOS, Ethernet, ARCNET, SONET, SDH, Fiber Distributed DataInterface (FDDI), RS232, RS485, IEEE 802.11, IEEE 802.11a, IEEE 802.11b,IEEE 802.11g, CDMA, GSM, WiMax and direct asynchronous connections). Thenetwork 104 can comprise one or more sub-networks, and can be installedbetween any combination of the clients 102, servers 106, computingmachines and appliances included within the computing environment 101.In some embodiments, the network 104 can be: a local-area network (LAN);a metropolitan area network (MAN); a wide area network (WAN); a primarynetwork 104 comprised of multiple sub-networks 104 located between theclient machines 102 and the servers 106; a primary public network 104with a private sub-network 104; a primary private network 104 with apublic sub-network 104; or a primary private network 104 with a privatesub-network 104. The network topology of the network 104 can differwithin different embodiments, possible network topologies include: a busnetwork topology; a star network topology; a ring network topology; arepeater-based network topology; or a tiered-star network topology.Additional embodiments may include a network 104 of mobile telephonenetworks that use a protocol to communicate among mobile devices, wherethe protocol can be any one of the following: AMPS; TDMA; CDMA; GSM;GPRS; UMTS; or any other protocol able to transmit data among mobiledevices.

The computing environment 101 can include more than one server 106A-106Nsuch that the servers 106A-106N are logically grouped together into aserver farm 106. The server farm 106 can include servers 106 that aregeographically dispersed and logically grouped together in a server farm106, servers 106 that are located proximate to each other and logicallygrouped together in a server farm 106, or several virtual serversexecuting on physical servers. Geographically dispersed servers106A-106N within a server farm 106 can, in some embodiments, communicateusing a WAN, MAN, or LAN, where different geographic regions can becharacterized as: different continents; different regions of acontinent; different countries; different states; different cities;different campuses; different rooms; or any combination of the precedinggeographical locations. In some embodiments the server farm 106 may beadministered as a single entity, while in other embodiments the serverfarm 106 can include multiple server farms 106.

Referring now to FIG. 1C, illustrated is a block diagram of anotherembodiment of a computing device 100. Included within the computingdevice 100 is a system bus 150 that communicates with the followingcomponents: a bridge 170, and a first I/O device 130A. In anotherembodiment, the bridge 170 is in further communication with the maincentral processing unit 121, where the central processing unit 121 canfurther communicate with a second I/O device 130B, a main memory 122,and a cache memory 140. Included within the central processing unit 121,are I/O ports, a memory port 103, and a main processor.

In some embodiments, the computing device 100 may include a cache memory140 that communicates with a central processing unit 121 via a secondarybus, sometimes referred to as a backside bus. The cache memory 140 canbe any memory type, and in some embodiments can be any one of thefollowing types of memory: SRAM; BSRAM; or EDRAM. Other embodimentsinclude cache memory 140 and a main memory unit 122 that can be any oneof the following types of memory: Static random access memory (SRAM),Burst SRAM or SynchBurst SRAM (BSRAM); Dynamic random access memory(DRAM); Fast Page Mode DRAM (FPM DRAM); Enhanced DRAM (EDRAM), ExtendedData Output RAM (EDO RAM); Extended Data Output DRAM (EDO DRAM); BurstExtended Data Output DRAM (BEDO DRAM); Enhanced DRAM (EDRAM);synchronous DRAM (SDRAM); JEDEC SRAM; PC100 SDRAM; Double Data RateSDRAM (DDR SDRAM); Enhanced SDRAM (ESDRAM); SyncLink DRAM (SLDRAM);Direct Rambus DRAM (DRDRAM); Ferroelectric RAM (FRAM); or any other typeof memory. Further embodiments include a central processing unit 121that can access the main memory 122 via: a system bus 150; a memory port103; or any other connection, bus or port that allows the processor 121to access memory 122.

The local system bus 150 can, in some embodiments, also be used by thecentral processing unit to communicate with more than one type of I/Odevice 130A-130N. In some embodiments, the local system bus 150 can beany one of the following types of buses: a VESA VL bus; an ISA bus; anEISA bus; a MicroChannel Architecture (MCA) bus; a PCI bus; a PCI-X bus;a PCI-Express bus; or a NuBus. Other embodiments of the computingmachine 100 include an I/O device 130A-130N that is a video display 124that communicates with the central processing unit 121. Still otherversions of the computing machine 100 include a processor 121 connectedto an I/O device 130A-130N via any one of the following connections:HyperTransport, Rapid I/O, or InfiniBand. Further embodiments of thecomputing machine 100 include a processor 121 that communicates with oneI/O device 130A using a local interconnect bus and a second I/O device130B using a direct connection.

In some embodiments, an I/O device 130A-130B may comprise a video orstill camera, and central processor 121 may use the camera to record oneor more images as user content, discussed in more detail below. In otherembodiments, an I/O device 130A-130B may comprise a microphone forrecording audio user content, discussed in more detail below. In otherembodiments, an I/O device 130A-130B may comprise a display fordisplaying one or more static or video images to a user, including usercontent or video media content, as well as advertising, text, images,interactive user interface elements, or other objects. In still otherembodiments, an I/O device 130A-130B may comprise one or moreamplifiers, speakers, or audio transducers, including headphones, forplaying audio content to a user, including user content or audio mediacontent, as well as advertising, user interface elements such as clicksor beeps, or other audio objects. I/O device 130A-130B may furthercomprise a touch screen, keypad, switch, knob, button, or otherinterface for accepting commands or other input from a user.

Referring now to FIG. 2A, and in brief overview, an embodiment of asocially-interactive, media service is depicted. As shown in FIG. 2A,one or more client devices 200A-200C communicate with a media provider210 via network 104. The media provider 210 shown in FIG. 2 includes acontroller 212 in communication with an recommendation service 214, amedia content catalog 220, a user content catalog 224, a station catalog228 and a media selection rules engine 230. The media provider 210 alsoincludes a media streaming engine 240 that accesses original content,and transcoded content, via network 104; for example, the originalcontent and transcoded content may be stored on a third-party storageservice such as the Amazon Simple Storage Service, provided byAmazon.com, Inc. of Seattle, Wash. Although shown in FIG. 2A as separatenetworks, network 104 and network 104′ may be, in fact, the samenetwork.

Still referring to FIG. 2A, and in greater detail, an embodiment of aclient 200C is depicted that executes a web browser 202C to communicatewith the media provider 210. In these embodiments, client 202C may bedesktop, laptop, or tablet computers capable of executing the webbrowser 202C. The web browser may include a plug-in or extension thatprovides the functionality described below. Alternatively, the webbrowser 202C may be provided with an HTML page include ActiveX controlsor Javascript that, when executed by the web browser, provide thedesired functionality.

FIG. 2A also depicts embodiments of clients 200A, 200B on which adedicated client agent 202A and 202B execute. In some embodiments, theclient agent 202A, 202B may reside as firmware in a client 200A, 200B.In other embodiments, the client agent may be downloaded and installedin the client 200A, 200B, either directly over a wireless network or bysynchronizing the client 200A, 200B with a personal or laptop computerto which the agent 202 has been previously downloaded. Client 200A, 200Bmay also include a camera and/or a microphone for capturing user contentand feedback that is ultimately stored by the media provider 210 andtransmitted to other users of the system. Whether provided as adedicated client agent 202A, 202B or a web browser client 202C, theclient agent 202 makes requests of the media provider 210 for content,allows the user to provide feedback to the media provider 210, providesa facility for the creation and management of media stations, andmanages the playback of audio or combined audio and video.

Still referring FIG. 2A, controller 212 receives and responds torequests made by the client agents 202A, 202B or the web browser agent202C using information received from one or more of the recommendationservice 214, the station catalog 228, the user content catalog 224, themedia content catalog 220 and the media selection rules engine 230. Thecontroller 212 may be implemented on a separate physical machine fromthat of the media selection rules engine 230 and the recommendationservice 214. In some of these embodiments, a single physical machine mayhost more than one controller 214. Alternatively, the controller 212 maybe implemented on a separate virtual machine from the machines thatprovide the media selection rules engine and the recommendation service214. In these embodiments, the virtual machines used to execute thecontroller 214 may be provided by a web service such as the AmazonElastic Compute Cloud provided by Amazon.com, Inc. In furtheralternatives, the controller 212, media selection rules engine 230 andrecommendation service 214 may all be executed by the same physicalmachine.

The station catalog 228, the user content catalog 224, and the mediacontent catalog 220 each store certain information about the mediaprovider 210 that the controller 214 uses to respond to requests orinstructions received by it from the client agents 202. In oneembodiment the respective catalogs 220, 224, 228 are relationaldatabases created using, for example, Microsoft SQLServer, sold byMicrosoft Corp. of Redmond, Wash. In other embodiments, the respectivecatalogs are flat file databases created using, for example, MicrosoftACCESS, manufactured by Microsoft Corp. of Redmond, Wash.

The station catalog 228 maintains a store of information relating tostations available from the media provider 210. Information maintainedby the station catalog 228 may include a globally unique identifier forthe station and one or more of the following items: an identification ofthe user who created the station; a station name; the seed used tocreate the station; an identification of one or more users who act as“curators” of the station, that is, they act as moderators of socialactivity associated with the station; descriptive text associated withthe station that is displayed to a consumer or potential consumer; andany other item of information to be associated with a station. Forexample, the media provider 210 may create a “blues” station that has no“curators”. The station catalog for that station may only maintain theglobally unique identifier assigned to the station, the name that shouldbe displayed to a consumer of the station (e.g., “The Blues Station”),the descriptive text for the station (e.g. “All Blues All the Time” or alist of the artists that a consumer can expect to hear when listening tothe station; and the seed used to create the station (e.g., “Stevie RayVaughn,” “Eric Clapton”).

The media content catalog 220 maintains a store of information relatingto media streams available to be sent to a consumer. In one embodiment,information maintained by the media content catalog includes: a globallyunique identifier for each item of media; a source locator address ofthe file storing the item of media; an artist associated with the itemof media; a title identifying the item of media; and the duration of theitem of media. In other embodiments, the information maintained by themedia content catalog further includes the date on which the item ofmedia was created, either as media, as an entry in the database, orboth; a genre associated with an item of media

The user content catalog 224 maintains a store of information relatingto media streams created by users and transmitted to the media provider210 to be associated with items of media content. It tracks informationsimilar to that in the media content catalog 220 but for user-createdcontent rather than media content.

The controller 212 maintains a “timeline,” or media queue, for eachstation that identifies the next item to send to a client 200. Thetimeline may be stored in the station catalog or, alternatively, it maybe stored in volatile memory associated with the machine on which thecontroller 214 is executing. In one embodiment, the controller 212creates and maintains the timeline using information from the stationcatalog 228, media recommendations from the recommendation service 214and decisions made by the media selection rules engine 230. Thecontroller 212, when placing a new item on the timeline, may decide tosend whether to place an identification of a media file, anidentification of user content, or an identification of anadvertisement. If an advertisement is to be played, the controller 212sends to the client a Uniform Resource Locator (URL) address directingit to download the advertisement from an ad server (not shown in FIG.2A). In some embodiments the media provider 210 includes anadvertisement catalog (not shown in FIG. 2A) to form the URL address. Ifuser content or media content is to be played, the controller 212 inmany embodiments uses information stored in the user catalog 224 to thecontent catalog 220, respectively, to form a URL address that directsthe client 200 to request the user content or the media content from themedia streaming engine 240.

In certain of these embodiments, the controller 214 determines that theclient device 200 itself maintains a copy of the media file and, inthese embodiments, the controller 214 forms an address that directs theclient device 200 to retrieve the media file from its local storage. Forexample, in typical internet radio services, a user is only providedcontent from the media provider's database. However, in someembodiments, the user may separately have a copy of the content in alocal media player database. For example, many users of Pandora alsohave large Apple iTunes libraries, or Windows Media Player libraries.Rather than needlessly using bandwidth delivering media that the useralready has locally, in some embodiments, the client device 200 or aclient agent on the device may locate a database of content stored onthe device, such as an iTunes playlist (sometimes referred to as aplist) or music database, and send a list of the content to clientdevice 200. Such content may be added to a database associated with theuser. Accordingly, when a playlist includes an item of media that theuser already has access to, rather than forming a URL address directingthe client to the media streaming engine 240, the controller 214 mayform a URL address directing the client to a local storage location,either via a localhost IP address such as 127.0.0.1, or via a file://access call rather than an http:// access or other network request.

The media engine 240 receives the request for the user content or mediacontent from the client 200, retrieves the requested information vianetwork 104′ and returns the media content to the client via network104. In some embodiments the media engine retrieves and transmits themedia stream in its original form. In other embodiments the media engine240 retrieves and transmits a transcoded version of the media stream.The media engine 240 can send the entire media file to the client priorto playback of the file or, alternatively, the media engine 240 maystream the media file to the client device 200, that is, the clientdevice 200 may begin playback of the media file prior to the completionof the download.

Referring briefly to FIG. 2B, a exemplary interface 250 presented byclient agent 202A, 202B is shown. In the embodiment shown in FIG. 2B, auser is provided with an interface 250 for consuming a media stream,whether doing so alone or as part of a larger group. As shown in FIG.2B, the interface 250 provides a graphical indication 260 of the mediastream currently being reproduced. In some embodiments the graphicalindication 260 may be selected (by touching or clicking, for example) toreveal a screen displaying further information about the media stream,such as at least one of the following: the number of times the mediastream has been played, a collection to which the media stream belongs(for example, the album to which a song belongs), user created contentassociated with the media stream (such as messages and dedications), acontrol allowing the user to reflect that they “like” the media stream;and a control to publish information about the media stream to socialnetworking sites such as FaceBook, Twitter, StumbleUpon and Reddit. Asshown in FIG. 2B, the graphical indication 260 may also include a badge262 indicating the number of pieces of user-generated content associatedwith the media stream. The graphical indication 260 may also allow theuser to toggle between different formats for the media stream duringplayback. For example, as shown in FIG. 2B, a user can toggle between asong and the video for a song, which includes both audio and video. Theinterface 250 may also include a soft button 252 allowing the user totoggle between individual consumption of a media stream and groupconsumption of a media stream and a popularity meter 256 that reflectsgraphically how highly other members of the community rate the currentlyplaying media stream. The interface 250 also includes a control 254 forinitiating a chat session. In some embodiments, the chat session may beinitiated with other users who are currently consuming the same mediastream. In other embodiments, the chat session is initiated with otherusers that the user of the client 200 has identified as a “friend.” Instill other embodiments, the chat control 254 may initiate a chatsession with a user that provided user content associated with thecurrent media stream. Other features of the interface 250 depicted inFIG. 2B include a bar 270 for publishing “station events” to consumers,such as the fact that another consumer has indicated that they like ordislike the current media stream or information regarding why thecurrent media stream is being played. As shown in FIG. 2A, if there is aspecific user associated with the information published on the bar, aprofile picture 274 of that user can be displayed.

Although the embodiment of the interface 250 shown in FIG. 2B isprovided by an iPhone device, in other embodiments the client agent 202operates on a mobile phone using the ANDROID operating system. In otherembodiments, the client agent 202 operates in a tablet computing devicesuch as an iPad, Blackberry Playbook or Microsoft Xoom. In still furtherembodiments the client agent 202 may be a software program capable ofexecution by a browser application which itself executes in an operatingsystem environment provided by a personal, laptop or virtual computer.

Referring now to FIG. 3A, and in brief overview, an embodiment of aclient agent 202 for requesting media is shown. Although illustrated ona portable device, in many embodiments, a user may utilize a webapplication or application on a desktop client, laptop, or tabletcomputer to perform the same functions. In brief overview, the clientagent 202 may provide a list of stations featured for the user 302, alist of user-created and/or favorite stations 304, and/or a list ofrecently listened-to stations 306. In some embodiments, the client agent202 may provide a list of retrieved stations 310, responsive to a search308 or selection of list 302, 304, or 306, entered by a user. The usermay access station information for each search result station 312,illustrated in FIG. 3B and discussed in more detail below. The user mayalso decide to create a new station 314, illustrated in FIG. 3C anddiscussed in more detail below. As used in this document, the term“station” refers to any collection of media streams that are groupedtogether logically.

Still referring to FIG. 3A and in more detail, in some embodiments, theclient agent 202 may present a list of featured stations 302 to theuser, responsive to a user selection. The list of featured stations 302may include one or more stations created by other users, or the mediaprovider 210, that correspond to one or more user preferences. Forexample, the user may have expressed a preference for country music. Themedia provider 210 may determine that a station using Garth Brooks as anartist seed corresponds to this user preference, and can place thatstation in a list of featured stations to be presented to the user. Inother embodiments, the featured stations may be based off otherinformation provided by the user. For example, the user may follow anartist's social networking feed, and the media provider 210 may identifythe relationship and add a station corresponding to the artist to thefeatured stations. In one embodiment, the media provider 210 may parseinformation provided by the user to identify preferences. For example,the user may have mentioned on a social networking feed the fact oftheir attendance at a concert by an artist, either explicitly or byexpressing that they “like” a concert event. The media provider 210 mayidentify the artist, and add a station corresponding to the artist tothe featured stations.

The client agent 202 may also present a list of stations created by theuser, or created by other users or the media provider and identified asfavorite stations 304, responsive to a user selection. In someembodiments, a user may create a plurality of stations. For ease offinding and returning to these stations, the stations may be listed forthe user. In some embodiments, the stations may be listed inchronologically-created order, in order of most recent access, or inalphabetical order. In many embodiments, the user may listen to stationscreated by other users or the media provider. When listening, if theuser likes the station, they may be able to identify the station as a“favorite” station. Such favorite stations also may be added to the list304. Thus, list 304 may include a list of stations to which the user haspreviously listened and may wish to return.

The client agent 202 may also present a list of stations recentlylistened accessed 306, responsive to user selection. Similar to the listof favorite stations 304, the list of recent stations 306 may comprise alist of stations accessed within a predetermined time period, or apredetermined number of the most recently accessed stations. Recentstations 306, unlike favorite stations 304, may include stations thatwere created by other users but not identified by the user as favoriteat the time. The user may return to these stations to identify them asfavorites so that they appear in list 304. In other embodiments, themost recent station or stations may also be favorite stations, but maybe more easily accessed by the user. For example, list 306 may be lesscluttered than list 304.

The client agent 202 may also provide a search interface 308. A user mayuse search interface 308 to search for stations by artist, song, genre,album title, station name, or one or more tags or keywords related tothe station or media. Search results may include one or more stationsrelated to the search string. In some embodiments, the user may use thesearch query 308 to generate a new station 314.

In one embodiment, responsive to the user entering a search string orselecting one of lists 302, 304, or 306, the client agent 202 maytransmit a query to a controller or server for the corresponding list ora list of stations corresponding to the search string. The query maycomprise an identification of the user, and an identification of thelist or the search string. The server or controller may respond with alist of stations 310. In some embodiments, as when the user hasrequested list 302, 304, or 306, the server may respond with a list ofstations in order of priority, chronological creation date, or lastaccessed date. In embodiments where the user has requested stationscorresponding to a search string, or one of lists 302, 304, or 306, theserver may respond with the list of stations prioritized by the numberof the user's friends that are listening to the station, have listenedto the station, or have liked the station.

In some embodiments, the list of stations 310 may comprise one or morestation identifiers 312 corresponding to the requested item or searchstring. In one embodiment, each station identifier 312 may comprise apicture, such as an artist picture, a picture of a user who created thestation, an icon representative of a genre of the station, an albumcover representative of the station, or any other indicator. In anotherembodiment, each station identifier 312 may comprise a name of thestation. In still another embodiment, each station identifier 312 maycomprise a name of a currently playing item of media on the station, anext-playing item of media on the station, and/or a picture of an albumincluding the currently playing or next-playing song or other identifierof the next playing item of media on the station. In some embodiments,each station identifier 312 may further comprise an identification of anumber of listeners or viewers of the stations, a number of friends ofthe user who are listening to or viewing the station, a number of itemsof media of the station's playlist that the user has liked, or any otheravailable information. In one embodiment, the user may select a stationidentifier 312 to learn more information about the station or startlistening to the station.

If the user is not interested in listening to a currently existingstation in the list, or a station from one of lists 302, 304, or 306,the user may use the search string 308 to generate a new station 314.Responsive to a user selection, the client agent 202 may transmit arequest to a controller or server of a media provider to generate a newstation. In some embodiments, the generated includes a useridentification and the search string. The search string may be used as aseed to generate the new station, or may be used to generate a seed forthe station.

Referring now to FIG. 3B, one embodiment of an interface provided by aclient agent 202 for viewing station information about a station isshown. Although illustrated on a portable device, in many embodiments, auser may utilize a web application or application on a desktop client,laptop, or tablet computer to perform the same functions. In briefoverview, the client agent 202 may provide a station description 316, acurrently playing track 318 on the station, a list ofcurrently-listening users 320 or access to such a list, and a list ofusers that have liked the station and/or currently playing item of media322 or access to such a list. In some embodiments, the client agent 202may provide an interface 324 for allowing the user to add the station toa list of favorite stations 304. In another embodiment, the client agent202 may provide an interface 326 for transmitting a status update or“like” indicator to a social networking service, such as Facebook. Insome embodiments, the client agent 202 transmits a request to join orlisten to the station, responsive to the user selecting to view thestation information, while in other embodiments, the client agent 202may provide a “listen to this station” button or interface (notillustrated) for user selection. In such embodiments, the client agent202 may transmit the request to join or listen to the station responsiveto the user selection of the button.

Still referring to FIG. 3B and in more detail, in some embodiments, aclient agent 202 may provide a station description 316 to a user.Station description 316 may comprise one or more of a station name, astation genre, an artist name, and an identifier of a seed or seeds usedto generate the station. In some embodiments, station description 316may comprise a short description of the station written by a user, theuser who created the station, the media provider, an artist whose workis played by the station, an advertiser associated with the station, orany other entity.

In some embodiments, the client agent 202 may provide an identificationof a currently playing track 318 on the station. In other embodiments,such as when the station is paused or the user is joining the station insolo listening mode, discussed in more detail below, the client agent202 may provide an identification of a next playing track 318. Thecurrently playing or next playing track information 318 may comprise atitle, artist name, image of the artist or album cover, icon, genre, orother information. In one embodiment, currently playing or next playingtrack information 318 may comprise an identifier of a number oflisteners that have liked the item of media, or a number of the user'sfriends that have liked the item of media.

In one embodiment, the client agent 202 provide a list or access to alist of users that are currently listening to the station 320. In someembodiments, the user may utilize the list to view who is listening to astation in real-time. In one embodiment, the client agent 202 may filterthe list by friends of the user, or may prioritize the list based onfriends of the user, such that the user's friends appear first in thelist of listeners.

The client agent 202 may also provide a list or access to a list ofusers that have liked the station or liked the currently playing or nextplaying item of media 322. As discussed above, in some embodiments, theclient agent 202 may filter the list 322 by friends of the user, or mayprioritize the list 322 based on friends of the user, such that theuser's friends appear first in the list of users that have liked thestation, or liked the currently playing or next playing item of media322.

The client agent 202 may also provide an interface 324 for the user toadd the station to a list of favorite stations. In some embodiments,responsive to the user selecting the interface 324, the client agent 202may transmit a request to a server or controller comprising anidentification of the user and an identification of the station, therequest indicating to add the station to a list of favorite stations304.

In another embodiment, the client agent 202 may provide a secondinterface 326 for the user to update a social networking status with thestation identification, or share the station with friends via a socialnetworking site, such as Facebook. In one embodiment, the client agent202 may transmit a request to an operator of a social networking site toupdate a status identifier for the user with an identification of thestation or to add the station to a list of items liked by the user.Friends of the user may receive an update via the social networkingsite, via a corresponding interface 326 with which they are interacting,or both. In many embodiments, the update includes the stationidentification information. In some embodiments, a friend of the usermay select the update to transmit a request to the media provider tolisten to the station, the request comprising the stationidentification. That is, via the social networking site, a user mayinvite friends to listen to the station.

Referring now to FIG. 3C, in some embodiments, the client agent 202 mayprovide an interface to allow the user to create a new station. In briefoverview, the user may provide a station name 328, station image 330,and one or more station seeds 332. In some embodiments, the user mayprovide a description of the station and/or a user story related to thestation, discussed in more detail below.

Still referring to FIG. 3C, in some embodiments, the user may provide astation name 328 and/or a station image 330. In one embodiment, astation name 328 may be automatically suggested, based on a searchstring provided to the client agent 202. For example, if the usersearched for stations related to Johnny Cash, and then chose to create anew station, the client agent 202 may suggest a station name 328 usingthe phrase “Johnny Cash”. Similarly, in some embodiments, the clientagent 202 may suggest a station image 330 based off the search string,such as a picture of an artist named in the search string, an albumcover of an album or item of media named in the search string, an iconrepresenting a genre named in the search string, or any otherinformation.

In some embodiments, the user may provide one or more station seeds 332to generate a station. In some embodiments, a station seed 332 maycomprise an artist name, a song name, an album name, a show name, amovie name, an actor or actress name, a record company or producer name,a director name, a genre, or any other type and form of information forgenerating a station including media similar to or associated with theprovided seed. In some embodiments, the user may provide multiple seeds332. In one embodiment, the created station may represent a union of theseeds. For example, if the user provides seeds of “Mozart” and “Rap,”the resulting station may include both classical symphonies and works byDr. Dre. In other embodiments, the created station may represent anintersection of the seeds. For example, with the same seeds, theresulting station may include neither the symphonies nor Dr. Dre, butrather, Falco's “Rock Me Amadeus”.

In some embodiments, the client agent 202 may transmit a request to acontroller or media provider server to create a station, the requestcomprising the station name 328, the station image 330, and/or the oneor more seeds 332. In some embodiments, the request may further comprisea station identifier, while in other embodiments, the controller maygenerate the station identifier when creating the station.

FIG. 3D illustrates additional exemplary embodiments of an interface,such as an interface on an Apple iOS device (left) and an interface onan Android OS device (right). As shown, each interface may include anindicator of a currently playing item of media 260, a badge for userstories 262, and a popularity meter 256.

Referring now to FIG. 4, illustrated is a flow chart of a method forgenerating a station and delivering media related to the station. Inbrief overview, a media delivery system or controller receives a requestfrom a user or computing device of a user, at step 400. The request maycomprise a request to listen to or join an existing station and mayinclude an identification of the existing station, or may be a requestto generate or create a new station. If the request is to join anexisting station, the existing station may be active and currently beinglistened to by one or more other users, or may be inactive, paused, orset for solo listening. If the request is to join an existing stationwith active listeners, then the current item of media URL may be sent tothe client at step 920, discussed in more detail below. If the requestis to join an existing, but inactive station, then at step 410, in someembodiments, a corresponding station seed may be retrieved from astation catalog for transmission to a recommendation service 214. If therequest is to create a new station and does not include a seed, a seedmay be generated based on retrieving social metadata such as from asocial networking site (e.g. Facebook, LinkedIn, Twitter, MySpace, orany other social networking site) at step 420, and either generating aseed based on the metadata at step 430, or identifying and weightingsimilar users at steps 500 and 550 for transmission to therecommendation service 214. In other embodiments, the request may be tocreate a new station and may include one or more seeds for transmissionto the recommendation service 214, as discussed above in connection withFIG. 3C.

The seed or seeds may be passed or transmitted to a recommendationservice 214. At step 600, the recommendation service may identify acandidate list corresponding to the seed. The candidate list maycomprise a list of similar items of media to the seed item of media oritems of media related to the seed artist or genre. In some embodiments,the candidate list may comprise similarity weights for each similar itemof media, while in other embodiments, the candidate list may beimplicitly weighted by order, where the first item in the list is themost similar, and the last item in the list is the least similar. Atstep 700, the recommendation service may add and remove items of mediafrom the candidate list. At step 800, the recommendation service maymodify the explicit or implicit weights of items of media in thecandidate list based on the requesting user's social relationships. Atstep 850, the recommendation service may generate a recommendation list,and may return or transmit the recommendation list to the controller212.

At step 900, in some embodiments, the controller 212 may select an itemof media from the recommendation list. In other embodiments, therecommendation service 214 may select an item of media from therecommendation list and transmit an identification of the selected itemof media to the controller. At step 920, the controller 212 may transmita URL for the song to the client, so that the client may retrieve theitem of media. At step 940, the controller may receive a request fromthe client for a next item of media. In some embodiments, the controllermay repeat steps 900-940, while in other embodiments, the controller maytransmit the request for a next item of media to the recommendationservice 214, which may perform step 900 and respond with a next item ofmedia identification to the controller, which may repeat steps 920-940.

Still referring to FIG. 4 and in more detail, at step 400, a mediaprovider, controller, or server may receive a request for media from acomputing device of a user. In one embodiment, the request may comprisea request to join or listen to an existing, active station. For example,as discussed above in connection with FIG. 3A, the user may identify anexisting station that they wish to listen to, and may select thestation, initiating a request to join the station. The request maycomprise an identification of the user, an identification of thestation, a preferred audio format, a preferred video format, a preferredaudio quality, a preferred video quality, a social networking siteprofile identifier, or any other type and form of information.

In some embodiments, responsive to receiving a request to join anexisting, active station, the media provider or controller may replywith a URL for a currently playing item of media or a next playing itemof media for the client to retrieve at step 910. In one embodiment, themedia provider or controller may reply with a current time in the itemof media. For example, and discussed in more detail below, if a userjoins a station that is currently 2 minutes and 10 seconds into an itemof media, the media provider may reply with a URL of the currentlyplaying item of media, plus an indicator that the client should startplaying the item of media at 2 minutes and 10 seconds into the item ofmedia. This allows the client to synchronize with other currentlisteners, without having to multicast content. In some embodiments, theclient may be directed to start playing the item of media at a slightlylater time, to allow for latency and processing delays.

In another embodiment, the request from the client may comprise arequest to join an existing, but inactive station. An inactive stationmay comprise a station with no current listeners, or a station in sololistening mode. As there may be no currently playing items of media onsuch stations, in some embodiments, the controller or media provider mayretrieve a station seed corresponding to the station at step 410. Thismay be done to allow the media provider to generate a playlistcorresponding to the existing station, for selecting a next item ofmedia to send to the listener. In some embodiments, however, the mediaprovider may retain a previously generated playlist for the station andskip steps 410-850. This may reduce processing requirements. However,the station playlist may not represent recent trends or similaritiesbetween the station seed and new items of media or artists, unreleasedat the time of creation of the older playlist. In some embodiments, themedia provider may determine if the playlist is “stale” or has not beengenerated within a predetermined time period, such as one week, twoweeks, or any other time period. If the playlist is not stale, thensteps 410-850 may be skipped.

As discussed above, a station seed may comprise an artist name, a songname, an album name, a show name, a movie name, an actor or actressname, a record company or producer name, a director name, a genre, orany other type and form of information for generating a stationincluding media similar to or associated with the provided seed. In someembodiments, retrieving a station seed at step 410 may comprise queryinga station database or catalog for a seed associated with a stationidentifier or name. For example, in one embodiment, the request maycomprise a station ID. At step 410, the controller or provider may querya database for a seed corresponding to the station ID in the request.

In still another embodiment, the request from the client may comprise arequest to create a new station, and may include a seed for the station.In some embodiments, responsive to receiving the request, the controlleror provider may create a new station in a station catalog or database,and may associate the seed with the newly created station. In someembodiments, the controller may assign a station ID to the newly createdstation, while in other embodiments, the request may include a stationID to be assigned to the newly created station. In one such embodiment,the station ID may be generated based off information in the request,such as one or more of a timestamp, a requesting user ID, a source IPaddress of the requesting user, a sequence ID of the request, a stationname, a station picture, a station description, or a hash of any or allof these values or any other information. In some embodiments, therequest may comprise a station name and/or picture, and the controllermay store the name and a reference to the picture in the stationdatabase with the station.

In still yet another embodiment, the request from the client maycomprise a request to create a new station, but may not include a seedfor the station. Unlike the embodiment illustrated in FIG. 3C in which auser explicitly generates a new station, in some embodiments, requestsfor new stations without seeds may be generated when a user firstconnects to the media provider. For example, rather than waiting for theuser to provide a seed or request to join a station, it may be desirableto immediately provide music that the system believes the user willenjoy. In one example embodiment, a link to the media provider may beprovided to a user through a friend's post on a social networking sitesuch as Facebook, or via a widget or application. If the user clicks onthe link, the media provider may create a new station for the user toimmediately provide media content, without requiring the user to firstprovide a seed.

In some embodiments, discussed in more detail below in connection withFIGS. 5A-5C, upon receiving a request to generate a new station thatdoes not include a seed, the media provider may generate a seed for thenew station. The media provider may retrieve social metadata from asocial networking site at step 420, such as Facebook, Twitter, LinkedIn,or any other social networking site, including social networking sitesmaintained by the media provider. Social metadata may includedemographic data, such as age, geographic location, gender, ethnicity,primary language, or similar data; identifiers of subjective preferencessuch as Facebook “likes” or items that the user has indicated a positivepreference for or followed or “friended” users; comments regardingartists, videos, movies, songs, or books; and/or network relationshipssuch as identified friends, family members, co-workers, etc.

In some embodiments, a seed may be extracted or generated based on thisdata at step 430. For example, the social metadata may explicitlyidentify an artist, such as an artist that the user has indicated apositive preference for, followed, or “liked”; or may explicitlyidentify a song, video, movie, or album by an artist that the user has“liked” or otherwise indicated a positive preference for, such as byleaving a positive review on a shopping site or rating the song or albumhighly. The social metadata may also implicitly identify an artist,song, video, movie, or album, such as via comments the user has left ona blog post, forum post, news article, or discussion thread that includethe name of the artist, song, video, movie or album.

To prevent false positive generation of seeds, in some embodiments, themedia provider may present to the user a list of artists includingexplicitly or implicitly identified artists. For example, if the userhas explicitly indicated that they like an artist, and has discussedanother artist extensively in a forum, the media provider may presentone or both artists to the user as potential seeds.

In another embodiment using social metadata and network relationships,at step 500, the media provider or a recommendation service 214 of themedia provider may identify and weight similar users to the requestinguser. At step 550, the media provider or recommendation service 214 maygenerate a seed based on the weighted similar users.

Accordingly, aside from embodiments in which the received request is tojoin an existent, active station or an inactive station that has acached playlist, in many embodiments, the media provider or controllermay either receive, retrieve, or generate a seed for the station. Theseed may then be provided or transmitted to a recommendation service 214to generate a recommendation list via steps 600-850, discussed in moredetail below.

As discussed above, in some embodiments, a seed may be generated atsteps 500 and 550. A seed may be generated based off a comparison of therequesting user to other users with profiles in the system. For example,referring briefly to FIG. 5A, illustrated is a Venn diagram 502 of anembodiment of overlapping user traits 504A-504C and users 506A-506E. Insome embodiments, a requesting user 506A may share one or more traits504A-504C with one or more additional users 506B-506E. In oneembodiment, the additional users 506B-506E may be related to therequesting user 506A. For example, the requesting user 506A may haveeach of users 506B-506E as friends in a social networking profile, suchas a Facebook profile or Google+ profile. This may additionally limitthe number of users to compare to the requesting user, reducingcomplexity. In other embodiments, the additional users 506B-506E may beimplicitly related to the requesting user 506A, such as by all sharing afirst user trait.

User traits 504A-504C, referred to generally as user trait(s) 504, maycomprise one or more items of information about a user, eitherexplicitly provided by the user, or determined implicitly. In someembodiments, a user may provide a profile listing one or more items ofinformation or traits, such as a name, age, gender, ethnicity,geographic location, hobbies, preferred genre of music, preferredartists or items of media, school attended, profession, employer,favorite sports team, hair color, or any other type of information ortrait. In other embodiments, the user may provide the information ortraits by filling out a survey or answering questions provided by thesystem. Traits may accordingly be media related, such as preferred itemsof media, or non-media related, such as hair color. The latter may beuseful in identifying previously undetectable correlations between usersand media preferences, which may be desirable for targeted advertisingor marketing purposes, as well as providing higher quality mediarecommendations. For example, if it may be determined that users withina profession are more likely to prefer a particular artist, regardlessof the reason, recommendations including that artist may be provided toother users within the profession. Similarly, when playing media relatedto that artist to users whose professions are unknown, for example, adsrelated to the profession may be displayed, with a higher likelihood ofbeing relevant to the viewer.

In some embodiments, the media provider may determine the information ortraits by parsing a social networking user profile. For example, andreferring to FIG. 5B, in some embodiments, the media provider may parsea social networking user profile 510 for a list of friends oracquaintances 511; a frequency of communication with each friend 512. Insome embodiments, friends may be weighted more heavily or less heavily,based on how frequently the user communicates with the friend. Inanother embodiment, the media provider may parse the user profile 510for one or more of: a user's age or date of birth 514; a user's gender515; a user's geographic location 516; a user's hobbies 517; a user's“liked” or “disliked” bands or items of media 518; or any other type andform of information. In some embodiments, the information may includeone or more of: the user's ethnicity; the user's favorite quotes; theuser's favorite sports teams; the user's favorite foods; whether theuser participates in a social game, such as Farmville, developed byZynga, of San Francisco, Calif.; or other information. In oneembodiment, the information may further include meta-information, suchas how often the user visits the social networking user site, or howoften the user tags photos on the site. Such information may be usefulas an indicator of how rigorously the user is likely to be regardingrating items of media or artists, and accordingly, how much to weightratings.

Still referring to FIG. 5B, in some embodiments, to determine traits orinformation, the media provider or recommendation service may parsesocial networking messages 520. Messages 520 may comprise music relatedcomments 521, such as a mention of an artist, song, or album title;event related comments 522, such as a mention of a recently attendedconcert; or hobby related comments 523, such as a mention of a sport orlink to an article. By parsing comments, the recommendation service maydetect user traits without requiring the user to explicitly list thetraits in a profile 510. Additionally, the recommendation service may beable to pull information from different types of social networkingsites, regardless of specific layout.

Referring now to FIG. 5C, illustrated is a flow chart of an embodimentof a method for identifying and weighting related users to a first user,as discussed above in step 500 of FIG. 4. In brief overview of FIG. 5C,at step 530, a recommendation service may identify a next related userfrom a plurality of related users. In some embodiments, therecommendation service may identify a related user responsive to arequest from a controller or media provider. At step 532, therecommendation service may identify a trait and retrieve a weight forthe trait. At step 534, the recommendation service may identify if atrait of the first user matches the trait of the related user. If not,at step 536, the related user's weight or matching score may be reducedby an amount corresponding to the weight for the trait. If so, at step538, the related user's weight or matching score may be increased by anamount corresponding to the weight for the trait. Steps 532-538 may berepeated iteratively for a plurality of traits, and steps 530-538 may berepeated iteratively for a plurality of users. At step 540, in someembodiments, the recommendation service may identify a highest scoredrelated user.

Still referring to FIG. 5C and in more detail, at step 530, therecommendation service may identify a second user, or related user,related to the first user, or requesting user. As discussed above, insome embodiments, the requesting user may be a user who has initiated arequest to create a station. A related user may comprise a user relatedto the first user, either explicitly, such as being a friend of thefirst user on a social networking site, being followed by the firstuser, following the first user, or implicitly, such as being employeesat the same company, living in the same town, or having any other traitin common. In some embodiments, identifying the second user may compriseretrieving, by the recommendation service, a list of friends, followers,followed users, colleagues, family members, or other associated users ofthe first user from a social networking service, and proceedingiteratively through the list of associated users. In one embodiment, thelist of associated users may be ordered based on a frequency ofcommunication between each associated user and the first user. Forexample, users with whom the first user regularly communicates via thesocial networking service may be placed higher in the ordered list. Suchcommunications may include writing wall posts, sending public or privatemessages, tagging photos, playing multiplayer games, commenting onposts, “liking” posts, or any other similar interaction. In a furtherembodiment, to reduce processing requirements, the number of associatedusers in the list may be limited to a predetermined number, such as 100,500, 50, 10, or any other number. In another further embodiment, thenumber of associated users in the list may be limited based on a time ofrecent communication, such as associated users with whom the first userhas communicated with in the past day, past week, past month, or anyother time period. In yet another further embodiment, the number ofassociated users in the list may be limited based on a frequency ofcommunication, such as associated users with whom the first user hascommunicated with at least once per day, once per week, once per month,or any other rate.

At step 532, the recommendation service may identify or select a traitfrom a predetermined list of traits and retrieve a predetermined weightfor the trait. In many embodiments, different traits may be weighteddifferently, based on how well similarity of the trait correlates withmedia preferences. For example, if it is determined that age correlateshighly, such that users of similar ages are highly likely to prefersimilar music, the age trait may be heavily weighted. Conversely, if itis determined that hair color correlates poorly, such that similar haircolors provide little indication of whether the users will prefersimilar music, the hair color trait may be lightly weighted. Generally,traits such as explicitly preferred bands or albums, age, gender, andgeographic location may be weighted more heavily than traits such aswhether two users share similar followers, hobbies, or employers. Insome embodiments, the recommendation service may dynamically adjustweights as more user preferences are received by the system and morecorrelations may be determined. For example, the recommendation servicemay original give gender a heavy weight, but as more and more usersinteract with the system and rate media, the recommendation service maynote that gender does not correlate very well with preferences, or maycorrelate well within one genre, but not correlate at all within asecond genre. Accordingly, trait weightings may be dynamically adjustedas better information about correlations is received.

At step 534, the recommendation service may determine if the first userand second user match for the selected or identified trait. In oneembodiment, determining if the first user and second user match maycomprise determining a logical AND of the first user and second user'sprofile or information item. In other embodiments, determining if thefirst user and second user match may comprise determining if the traitof the first user and trait of the second user are similar or related.For example, if the first user lives in Boston, Mass. and the seconduser lives in neighboring Cambridge, Mass., the recommendation servicemay determine that both users live in the Boston metropolitan area, bothlive in eastern Massachusetts, both live in Massachusetts, both live inNew England, both live in the United States, etc. Accordingly, for manytraits, users may be not identical, but still similar. In a similarembodiment, the recommendation service may have windows or blocks ofvalues for a trait and compare the users based on these windows. Forexample, in one such embodiment, the recommendation service may defineage ranges such as under 10, 11-13, 14-17, 18-21, 22-25, 26-30, 31-41,42-65, and 65 and over. A first user of age 32 may be identified assimilar to a second user of age 36, based on both ages falling withinthe same range or window. Accordingly, in some embodiments, traits maybe directly compared for exact matches, while in other embodiments,traits may be compared based on similar matches or matches to a range ofvalues. In a further embodiment, traits may be compared in both methods,with exact matches having a higher weight than matches based on a rangeof values.

If the traits match, then at step 536, a matching score or similarityscore between the first user and second user may be increased by anamount proportional to the retrieved weight for the trait. Similarly, atstep 538, if the traits do not match, then a matching score orsimilarity score between the first user and second user may be decreasedby an amount proportional to the retrieved weight for the trait. In someembodiments, the increase or decrease amounts may be different. Forexample, if users are within the same age range, the matching score maybe increased by amount n, while if the users are not within the same agerange, the matching score may be decreased by amount m. This may be doneto reflect that positive correlations may be more accurate than negativecorrelations. In some embodiments, increasing a matching score at step538 or decreasing a matching score at step 536 may comprise retrieving amatching score associated with the first user and second user, while inother embodiments, the score may be retrieved at any of steps 530-534.In some embodiments, the matching score may comprise a first defaultmatching score, that may be adjusted upwards or downwards at steps536-538. For example, because the second user is identified as relatedto the first user at step 530, in some embodiments, it may be assumedthat the users are at least marginally similar, or are more similar thanstrangers. Accordingly, a default matching score of, for example, 70%,may be used. In other embodiments, any other value may be used as adefault score, including 0% and 100%.

In some embodiments, steps 532-538 may be repeated for each of aplurality of traits. For example, steps 532-538 may be repeated for theusers' ages, geographic locations, employers, hobbies, ethnicities,genders, preferred bands or albums, preferred sports teams, preferredtelevision shows, lists of other friends, lists of followed other users,lists of followers, or any other type and form of information or traits.Accordingly, through repeated iterations, the matching score between thefirst and second user may become more and more accurate.

Similarly, in some embodiments, steps 530-538 may be repeated for eachof a plurality of related users. As discussed above, in manyembodiments, the recommendation service may iterate through a list ofthe first user's friends to generate a plurality of matching scoresbetween the first user and each of a corresponding plurality of otherusers. At step 540, in some embodiments, the recommendation service mayidentify the related user of the plurality of related users with thehighest matching score. In some embodiments, where the first user onlyhas a single related user or friend, the system may identify the singlerelated user. In other embodiments where the first user only has asingle related user or friend, the recommendation service may seek toidentify other similar users, such as users similar to the singlerelated user. For example, if user A is only related to user B, but userB is related to users C, D, and E, the recommendation service mayexecute steps 530-540 for user A and each of users B, C, D, and E. Insome embodiments, the recommendation service may proceed farther down atree of related users and users related to related users until apredetermined number of users have been compared to the first user, or auser with a matching score to the first user above a predeterminedthreshold has been identified. In some embodiments, the recommendationservice may respond or transmit to the controller or media provider anidentification of the related user with the highest matching score.

Referring back to FIG. 4, having identified a related user to the firstuser with a highest matching score, then at step 550, in someembodiments, the controller or media provider may retrieve a seed orseeds based on the identified related user. For example, in oneembodiment, the controller or media provider may retrieve a seed of amost listened to station of the identified related user. In anotherembodiment, the controller or media provider may retrieve a seed of amost recently listened to station of the identified related user. Inanother embodiment, the controller or media provider may retrieve a seedof a station of the identified related user with the highest number ofmedia preferences associated with the station. This may be done toensure that a station playing highly preferred items of media isprovided to the first user, rather than a station that the related userhas recently created but not yet listened to much, or only listened to afew times. In still another embodiment, the controller or media providermay retrieve a plurality of seeds. For example, in one such embodiment,the controller or media provider may determine a plurality of relatedusers with the highest matching scores, such as the top five matchingscores, and select one seed from each.

Still referring to FIG. 4, in some embodiments, at step 600, arecommendation service may identify a candidate list, responsive to arequest from a controller, the request including one or more seeds. Theseed or seeds may comprise one or more of an artist name, a song name,an album name, a show name, a movie name, an actor or actress name, arecord company or producer name, a director name, a genre, or any othertype and form of information for generating a station including mediasimilar to or associated with the provided seed. In further embodiments,the seed or seeds may comprise one or more of a user device type (suchas Apple iPhone or HTC Droid), user geographical location, a useridentifier or ID, one or more user preferences or song preferences, orany other type and form of information.

Referring briefly to FIG. 6A, illustrated is a table illustrative of oneembodiment of a candidate list 602. In some embodiments, a candidatelist 602 may comprise a list of items of media 604 that are similar to aseed item of media, or items of media by a seed artist or genre. In manyembodiments, the recommendation service may identify or generate acandidate list from a similarity database. In some embodiments, thesimilarity database may be retrieved from a third party service, such asLast.fm, by CBS Interactive of San Francisco, Calif.; or the Echo Nest,of Somerville, Mass. In some embodiments, the similarity database maycomprise one or more candidate lists for one or more correspondingseeds. Thus, in many embodiments, a candidate list may be a subset of asimilarity database, selected responsive to a seed.

In other embodiments, the similarity database may comprise amulti-dimensional similarity-space of items of media, with items ofmedia comprising nodes within the space, placed with regard tosimilarity. For example, blues songs may be placed in one area of thespace, nearby jazz songs and swing songs, while country songs may beplaced in another region, with rockabilly songs in between. The distancebetween two nodes may be easily calculated to determine similarity ordissimilarity. In some embodiments, dimensions for the space may includeartist, genre, key, mood, tempo, instrumentation, style, or othercharacteristics.

In still other embodiments, the similarity database may be generated byexplicit associations between items of media by clients of a mediadelivery service. For example, as more users add two songs to the sameplaylist, the system may note that the songs are more closely related.In these embodiments, similarity may not refer to the explicitcharacteristics of the songs themselves, such as style or mood, butrather indicate that users with similar tastes may like both songs.Thus, items of media in a candidate list may comprise items of mediathat are liked by users who also like the seed song for the candidatelist.

In some embodiments, items of media 604 in the candidate list 602 may beidentified by titles, while in other embodiments, items of media 604 maybe identified by an identification number, catalog number, InternationalStandard Music Number (ISMN), International Standard Recording Code(ISRC), globally unique ID (GUID), or any other type and form ofidentification number. In some embodiments, the candidate list 602 maycomprise an artist name or identifier 606. This may be helpful indistinguishing similar media titles by different artists, but may beunnecessary if the candidate list 602 includes ISRC or ISMN codes orsimilar identifiers specific to each item of media.

In some embodiments, the candidate list 602 may comprise a score 608. Inone embodiment, score 608 may comprise an explicit weighting or score,while in other embodiments, score 608 may be implicit in an orderedcandidate list 602. While the example candidate list of FIG. 5 includesartist and score information, in many embodiments, the candidate listmay merely comprise a list of identifiers of items of media in adatabase, such as index numbers, identifier codes, or GUIDs. Forexample, if the candidate list 602 includes ten items of media 602without corresponding scores 508, then the recommendation service mayidentify the first item of media as having a score of 10, the seconditem of media as having a score of 9, the third item of media as havinga score of 8, etc.

Referring now to FIG. 6B, in some embodiments, the recommendationservice may comprise or communicate with multiple similarity databases.For example, as discussed above, similarity databases may be generatedwith different algorithms. Accordingly, while candidate lists from thedifferent databases for a particular seed may significantly overlap,they may still have differences in either weighting or ordering, orinclusion of different items of media. To provide comprehensiverecommendations, it may be desirable to retrieve or identify multiplecandidate lists 602A-602C from a corresponding multiple similaritydatabases and multiplex the lists 610 to create a combined candidatelist 612.

In some embodiments, multiplexing the lists 610 may compriseinterleaving the lists, while in other embodiments, multiplexing thelists 610 may comprise generating a union or intersection of the lists.In still other embodiments, the recommendation service may select adifferent candidate list for each successive request, in round robin orother algorithm. In a further embodiment, the recommendation service maykeep track, via a controller, of which items of media listeners like ordislike, as well as which candidate list or lists 602A-602C includethose items of media. If a first candidate list generated from a firstsimilarity database includes more items of media that are disliked thana second candidate list generated from a second similarity database,then the first similarity database may be rated down or weightedagainst. Similarly, if the first list includes more items of media thatare liked than the second list, the first similarity database may berated up or weighted for. In some such embodiments, the recommendationservice may use a weighted round robin to select from the candidatelists, or otherwise weight the candidate lists when multiplexing thelists to generate a combined candidate list 612, responsive to whichsimilarity databases have been preferred or rated higher.

In a similar embodiment, the recommendation service or media providermay issue multiple requests to a similarity database with differentinputs or seeds. For example, a media provider may request a firstcandidate list 602A comprising items of media by the seed artist orartists provided by the user or generated as discussed above. This maybe used to guarantee some songs in the combined candidate list 612 bythe seed artists. The media provider may also request a second candidatelist 602B comprising items of media compatible with the seed artists,which may result in a longer candidate list than list 602A (particularlyfor new artists or artists without a substantial portfolio of work). Acompatible item of media may comprise an item of media by a similarartist or an item of media with similarity to another item of media. Forexample, a slow jazz song may be compatible with another slow jazz song,but not a speed metal song. Compatibility may be based on styles,genres, beats per minute, key, mode, harmonic or melodic components,instrumentation, vocal style, or any combination of these or othertraits, with compatible items of media sharing aesthetic components suchthat they will likely be liked (or disliked) by the same user within thesame media consumption session. The media provider may also request athird candidate list 602C comprising items of media compatible withitems of media selected from lists 602A-602B and/or the user's explicitpreferences. For example, the media provider may select a first set ofitems of media by the seed artists and returned in the first candidatelist 602A, and a second set of items of media most recently ratedpositively by the user for the station or similar playlist.

In some embodiments, multiplexing the lists 610 may comprise normalizingeach list 602A-602C. For example, in some embodiments, a first list 602Amay include similarity scores between 0.000 and 1.000, while a secondlist 602B may include scores between 1 and 100. A third list 602C mayinclude no scores, but have weighting implicit in the order of items inthe list. Accordingly, to properly multiplex the lists, in oneembodiment, the recommendation service may translate or normalize thelists into a common format, with a common scoring mechanism.

Referring back to FIG. 4, having identified a candidate list or combinedcandidate list at step 600, a recommendation service 214 may add and/orremove items of media from the candidate list at step 700. In someembodiments, it may be necessary to add a seed item of media to acandidate list for the seed item of media. For example, in someembodiments, a candidate list or list of similar items of media to aseed item of media may not include the seed item of media. This may bebecause a seed item of media is 100% similar to itself, by definition,and accordingly is considered an uninteresting case by the providers ofthe similarity database, or may be due to an algorithm that generates asimilarity database excluding the seed from each generated list. Forexample, in one such embodiment, the seed may comprise the origin for avector within a similarity-space of items of media, with the length ofthe vector to a second item of media identifying how similar ordissimilar the items of media are, and the direction indicating items ofmedia that are likewise similar to each other. As a O-length vector maybe directionless, the algorithm may require at least a non-zero lengthin order to identify a chain of similar items of media. Accordingly, inmany embodiments, the recommendation service 214 may not identify theorigin item of media.

Referring briefly to FIG. 7, illustrated is a diagram illustratingadding items to the candidate list based on explicit preferences 702 andremoving items based on explicit preferences 704. Although shown withthe candidate list 602 of FIG. 6A, in many embodiments, the candidatelist may comprise a combined candidate list, as discussed above inconnection with FIG. 6B. As shown, in many embodiments, one or moreitems or songs may be added to the candidate list 602 responsive toexplicit preferences 702. For example, a seed item of media for creatinga candidate list may be considered an explicitly “liked” item of media,because the station was created responsive to the seed. In someembodiments, other “liked” items of media may be added to the candidatelist 602. For example, for embodiments in which a combined candidatelist is created by performing a logical AND or intersection of twolists, items of media that appear in one candidate list may be left offof the combined candidate list. However, the user may have previouslyindicated that they “like” one of the left off items of media.Accordingly, at step 702, the item of media may be added back into thecombined candidate list.

Similarly, at step 704, items of media that the user has explicitly“disliked” or indicated a negative preference for may be removed fromthe candidate list or combined candidate list. For example, in someembodiments, regardless of the score 608 of an item of media, if theuser has indicated they do not like an item of media, the recommendationservice 214 may remove the item of media from the list to ensure thatthe user does not hear items of media they dislike.

In another embodiment, step 702 may be repeated to return a removed itemof media to the list. For example, in some embodiments, an item of mediamay be removed from the list based on a user having indicated a negativepreference for the item of media at a prior time. However, the user mayhave negatively rated the item of media months or years previously, andin the interim may have positively rated similar items of media, oritems of media by the same artist. In other embodiments, the user'sfriends may have positively rated the item of media, resulting in ithaving a very high score 608. Accordingly, in some embodiments, the itemof media may be returned to the candidate list, but perhaps at asignificantly reduced score to cautiously allow the user to re-discoverthe item of media.

Returning briefly to FIG. 4, after adding and removing items of mediafrom the candidate list at step 700, the recommendation service maymodify media weights in the candidate list based on social relationshipsof the requesting user at step 800. Referring now to, FIG. 8, anembodiment of a method 800 for modifying media weights in the candidatelist is illustrated in a flow chart. In brief overview, at step 802, therecommendation service may identify or select a user that is related tothe first user. At step 804, the recommendation service may identify aweight for the related user. At step 806, the recommendation service mayidentify a related item of media for the related user. In someembodiments, the identified item of media may be in the candidate listgenerated at step 700, while in other embodiments, the identified itemof media may not be in the candidate list. In one embodiment, responsiveto the item of media not being in the candidate list, the recommendationservice may add the item of media to the candidate list, identifying theitem of media as recommended by the related user at step 808. If theitem of media is in the candidate list, then in some embodiments at step810, the recommendation service may adjust the item of media's weight orscore within the candidate list responsive to the related user's weightor matching score, and the related user's preferences. Steps 806-810 maybe repeated iteratively for each of a plurality of related items ofmedia in the related user's preferences, and steps 802-810 may berepeated iteratively for each of a plurality of related users. At step850, in some embodiments, the candidate list may be returned as amodified candidate list or a recommendation list to the controller forselecting one or more items of media for playback. In other embodiments,discussed in more detail below, the recommendation service may selectthe one or more items of media for playback from the recommendationlist.

Still referring to FIG. 8, and in more detail, in one embodiment at step802, the recommendation service may identify a second user, or relateduser, that is related to the first user, or requesting user, from whichthe seed or seeds were received, or for which the seed was retrieved orgenerated, at steps 410 or 550 of FIG. 4. As discussed above, in someembodiments, a related user may comprise a user related to the firstuser, either explicitly, such as being a friend of the first user on asocial networking site, being followed by the first user, following thefirst user, or implicitly, such as being employees at the same company,living in the same town, or having any other trait in common. In someembodiments, identifying the second user may comprise retrieving, by therecommendation service, a list of friends, followers, followed users,colleagues, family members, or other associated users of the first userfrom a social networking service, and proceeding iteratively through thelist of associated users. In one embodiment, the list of associatedusers may be ordered based on a frequency of communication between eachassociated user and the first user. For example, users with whom thefirst user regularly communicates via the social networking service maybe placed higher in the ordered list. Such communications may includewriting wall posts, sending public or private messages, tagging photos,playing multiplayer games, commenting on posts, “liking” posts, or anyother similar interaction. In a further embodiment, to reduce processingrequirements, the number of associated users in the list may be limitedto a predetermined number, such as 100, 500, 50, 10, or any othernumber. In another further embodiment, the number of associated users inthe list may be limited based on a time of recent communication, such asassociated users with whom the first user has communicated with in thepast day, past week, past month, or any other time period. In yetanother further embodiment, the number of associated users in the listmay be limited based on a frequency of communication, such as associatedusers with whom the first user has communicated with at least once perday, once per week, once per month, or any other rate.

At step 804, in one embodiment, the recommendation service may determinea weight, or matching score, for the related user, the weight based ondegrees of similarity or similar traits between the related user and therequesting user. In some embodiments, determining a weight for therelated user may comprise performing step 500 of FIG. 3C, or one or moreiterations of steps 532-538 of FIG. 5C, discussed in detail above. Inanother embodiment where steps 532-538 have already been performed forthe related user and first user, such as when the user requested tocreate a new station without providing a seed, the recommendationservice may retrieve a previously-determined weight for the relateduser. As discussed above, determining a weight for the related user maycomprise comparing one or more traits of the requesting user and therelated user to increase or decrease a default similarity score.

At step 806, the recommendation service may identify a related item ofmedia for the related user. In one embodiment, a related item of mediamay comprise an item of media in the candidate list that the relateduser has previously rated positively or negatively. Such items of mediamay have appeared in other candidate lists for generation of playlistsfor the related user, and the related user may have indicated that theyliked or disliked various items of media as they came up in theplaylist. Because the related user has been identified as similar to therequesting user, the related user's preferences may also be similar.Accordingly, if the related item of media is in the candidate list, atstep 810, the related item's score or order within the list may beadjusted responsive to both the related user's preference (like ordislike), and the related user's weight or similarity to the requestinguser. For example, if the related user disliked the item of media, andthe related user is highly similar to the requesting user, therecommendation service may significantly reduce the score for the itemof media, or even remove the item of media from the list. If, on theother hand, the related user disliked the item of media, but is onlymarginally similar to the requested user, then the recommendationservice may only slightly reduce the score for the item of media.Similar embodiments may be used to increase the score for the item ofmedia if the related user liked the item of media. In some embodiments,the item's score may be adjusted positively or negatively, responsive tothe related user liking or disliking the item of media respectively, bya predetermined amount, proportional to the related user's weight.Accordingly, the more similar a related user is to the requesting user,the more the related user's preferences will affect the resultingmodified candidate list.

In another embodiment, the recommendation service may identify a relateditem of media at step 806 that is not in the candidate list. Forexample, in one embodiment, the related item of media may be an item ofmedia that the related user has recommended to the requesting user ordedicated to the requesting user. The item of media may have previouslybeen in the candidate list, but been removed at step 700, as discussedabove. Furthermore, as discussed above, in some embodiments, the lengthof a candidate list may be limited to reduce processing, such as wherethe candidate list comprises the 100 items of media with the highestdegrees of similarity to the seed. Accordingly, the 101st item of mediamay still be similar or related to the seed, but not be in the candidatelist. In any of these embodiments, the recommendation service maydetermine if the related user has rated the item of media positively ornegatively. If the user has rated the item positively, then at step 808,the recommendation service may add the related item of media to thecandidate list, at a predetermined score or weight proportional to theuser's weight, as discussed above. Because the item was not previouslyin the candidate list, the predetermined score may be a relatively lowscore, reflecting that the item was not judged to be highly similar inthe initial candidate list or lists.

In yet another embodiment, as discussed above, multiple candidate listsmay be generated from different similarity databases and multiplexed togenerate a single candidate list. In embodiments in which the singlecandidate list is a subset of the multiple candidate lists, such as anintersection or length-limited interleaving, an item of media may havebeen recommended on one candidate list, but not appear in the combinedcandidate list. In some embodiments, the recommendation service mayidentify the item of media and determine if the related user haspreviously rated the item positively. If so, then at step 808, therecommendation service may add the related item of media to thecandidate list, at a predetermined score or weight proportional to theuser's weight, as discussed above. In some such embodiments, thepredetermined score may be based off the item's score in the initialcandidate list in which it appeared.

In some embodiments, steps 806-810 may be repeated iteratively formultiple related items of media for the related user. In anotherembodiment, steps 802-810 may be repeated iteratively for multiplerelated users. Accordingly, by repeatedly adjusting, or lowering orboosting items of media in the candidate list based on social networkinginformation and related user preferences, a modified candidate list,sometimes referred to as a recommendation list, may be generated thatleverages the preferences of similar users to create a station with onlymedia that the requesting user is likely to enjoy.

Referring back briefly to FIG. 4, having generated a recommendation listat step 850, in some embodiments, at step 900, the recommendationservice may select one or more items of media from the recommendationlist to play or queue in a playlist. In another embodiment, therecommendation service may return the recommendation list to acontroller or media provider server, and the controller or server mayselect one or more items of media to play or queue in a playlist at step900.

Referring briefly to FIG. 9, illustrated is a flow chart of a method 900of selecting or queuing an item of media from a recommendation list. Inbrief overview, at step 902, the recommendation service or controllermay determine an adventurousness of the requesting user. At step 904,responsive to the determined adventurousness, the recommendation serviceor controller may select a portion of the recommendation list. At step906, the recommendation service or controller may select an item ofmedia content within the selected portion. At step 908, therecommendation service or controller may determine if the item complieswith one or more business rules or policies. If not, the recommendationservice or controller may select a next item of media content within theselected portion at step 906. If so, at step 910, the recommendationservice or controller may retrieve a URL for the item of media contentand transmit the URL to one or more users' computing devices.

Still referring to FIG. 9 and in more detail, in one embodiment, arecommendation service or controller may determine the adventurousnessof the requesting user. In one embodiment, the adventurousness of a usermay represent how willing the user is to listen to items ranked lower orless similar to a seed in an ordered recommendation list. A lessadventurous user may be less interested in lower ranked items, and wouldprefer to receive just higher ranked items. In some embodiments, theadventurousness of a user may be represented by a value stored in a userprofile, while in other embodiments, the adventurousness of a user maybe dynamically determined by presenting the user with a first lowerranked item and receiving either a positive preference or “like” or anegative preference or “dislike” from the user. Responsive to the userindicating a positive preference for the first lower ranked item, asecond lower ranked item may be presented to the user, the second lowerranked item ranked lower in the recommendation list than the first lowerranked item. Responsive to the user indicating a negative preference forthe first lower ranked item, a second item may be presented to the user,the second item ranked higher in the recommendation list than the firstlower ranked item. Accordingly, the recommendation service or controllercan dynamically probe the user's tolerance for items of content lesssimilar to the seed to determine how adventurous the user is.

In one embodiment, the recommendation list may be divided up intosections, such as the first section comprising the first 20 items, thesecond section comprising the next 20 items, the third sectioncomprising the further next 20 items, etc. In another embodiment, therecommendation list may be divided up into unevenly sized sections, suchas the first section comprising items 1-10, the second sectioncomprising items 11-50, the third section comprising items 51-120, etc.In still another embodiment, the recommendation list may be divided intohigh, middle, and low sections, responsive to similarity scores orweights. At step 904, responsive to the determined adventurousness ofthe user, the recommendation service or controller may select a portionof the recommendation list. Selecting a portion of the recommendationlist may comprise generating a random number and selecting a portion ofthe list, responsive to the random number. In many embodiments, theportions of the list may be unevenly weighted, such that therecommendation service selects a first, highest ranked portion of therecommendation list most often. For example, given a random numberbetween 1 and 100, and a recommendation list of 100 items of media withsections 1-20, 21-50, and 51-100, a recommendation service may selectthe highest ranked portion or 1-20 responsive to the random number beingequal to or between 1-50. Similarly, the recommendation service mayselect the middle section, or items 21-50, responsive to the randomnumber being equal to or between 51-80. Finally, the recommendationservice may select the lowest rated section, or items 51-100, responsiveto the random number being equal to or between 81-100. This unevendistribution results highly ranked or more similar items being selectedmore frequently than less similar items, which may reflect the user'spreferences.

In one embodiment, the weights for different sections may be based onthe user's adventurousness. For example, a highly adventurous user mayhave a less heavily weighted highly ranked section, and a more heavilyweighted middle or lower ranked section of the recommendation list.Conversely, a not very adventurous user may have a more heavily weightedhighly ranked section, with very low weights for middle or lower rankedsections. In one embodiment, the user's adventurousness may berepresented by a value a with values between 0 and 1 representing lessadventurous users, and values greater than 1 representing moreadventurous users. In such an embodiment, the random number may beraised to the power of the adventurousness value a, with the resultbeing used to select a portion of the recommendation list. Accordingly,the result for more adventurous users will tend to fall lower on therecommendation list in the less similar items, while the result for lessadventurous users will tend to fall higher in the recommendation list inthe more highly similar items. In other embodiments, the random numbersassigned to different sections may be unevenly distributed responsive tothe user's adventurousness.

Once a section of the recommendation list is selected, at step 906, anitem of media from within the section may be selected. In oneembodiment, this second selection may comprise a random selection fromwithin the section of the recommendation list. In another embodiment,the second selection may comprise a pseudorandom but non-repeatingselection of items from the section, such that no item within thesection is selected twice until each item is selected once. In yetanother embodiment, the second selection may comprise an orderedselection from within the second of the recommendation list, proceedingiteratively through the section.

At step 908, the recommendation service or controller may determine ifplaying back the item of media complies with one or more business rules.Several business rules apply to streaming or otherwise-provided media,based on, for example, the Digital Millennium Copyright Act (DACCA). Bycomplying with various business rules, including limitations based onthe number of times an item of content may be played within apredetermined time period, or the number of items of content by aspecific artist may be played within another predetermined time period,the media provider can take advantage of lower statutory royalties andcompulsory licensing schemes. Accordingly, having selected an item ofmedia at step 906, the recommendation service or controller may applyone or more business rules, responsive to a record of previouslyselected or played items of content on the station, to determine whetherplaying the selected item of media will violate one of the rules. If so,another item of media may be selected.

If the selected item of media does not violate a business rule, then atstep 910, the controller may retrieve a URL for the item of media and ahostname or address of a media delivery server with access to the itemof media. In one embodiment, the recommendation service performsselection of items of media, and transmits a playlist of one or moreitems of media to the controller. In a further embodiment, such playlistmay comprise identifiers of the one or more items of media, such asmedia item identifiers or GUIDs. However, it may be unnecessary totransmit additional other information to the controller, including itemweights, scores, or the entire recommendation list.

Referring back to FIG. 4, at step 920, the controller 212 may transmit aURL for the item of media to the client, so that the client may retrievethe media. In one embodiment, the controller 212 may transmit multipleURLs for a plurality of items of media to be played in sequence,allowing the client to prefetch and locally buffer the content. In someembodiments, the controller may transmit a playlist of one or moreitems, such as an M3U playlist, to the client. For example, in someembodiments, the media streaming server may use an HTTP live streamingprotocol or similar pseudostreaming communications protocol, and maytransmit a corresponding playlist for the items of media content.

At step 940, the controller may receive a request from the client for anext item of media. In one embodiment, the requested next item of mediamay comprise the next item of media to be played in a timeline, while inother embodiments, the requested next item of media may comprise an itemof media to be played after a local buffer of one or more items of mediais exhausted. For example, a client device may buffer three items ofmedia locally. After playing the first item and while playing thesecond, the client device may request a fourth item of media. Thisallows the client to continuously fill a buffer in advance. In someembodiments, the controller may repeat steps 900-940, while in otherembodiments, the controller may transmit the request for a next item ofmedia to the recommendation service 214, which may perform step 900 andrespond with a next item of media identification to the controller,which may repeat steps 920-940.

Referring briefly to FIGS. 10A-10C, in some embodiments, different itemsof media content may be selected for playback within the timeline orplaylist. For example, in addition to items of media content such assongs, music videos, and television shows, the media provider system maybe used to provide user generated content, such as user stories ordedications, as well as advertiser generated content. Advertisergenerated content may comprise audio and/or video advertisements, whichmay be provided to users responsive to user preferences and socialnetworking relationships, leveraging the access to social networkingprofiles discussed above for identifying media preferences of relatedusers. Because the recommendation service knows a user's age, location,gender, hobbies, preferences and other information, through parsing ofthe user's profile, highly targeted advertisements can be delivered. Ina further embodiment, the system may detect user preferences foradvertisements, similar to the system detecting user preferences foritems of media. For example, the media provider system may determinethat a user “likes” an item of media responsive to the user rating theitem up or selecting a “thumbs up” icon or similar icon. Similarly, themedia provider may determine that a first user “likes” an advertisementresponsive to the first user clicking on, selecting, or otherwiseinteracting with the advertisement. The recommendation service may thenadd the advertisement to playlists for similar or related users, on thegrounds that being similar, the other users are also likely to “like”the advertisement. This provides social networking-based feedback,refining the targeting of the advertisements.

User stories may comprise audio, video, or text generated by a user andassociated with an item of media. For example, in one embodiment, a userstory may comprise a brief audio and/or video recording by a userdescribing what a particular song means to them. In another embodiment,a user story may comprise an audio recording by a movie director,describing why certain cinematographic decisions were made duringfilming of a movie. In yet another embodiment, a user story may comprisean actress describing a motivation of her character in a scene of atelevision show. User stories may be public, or may be restricted torelated users to the user who created the user story. In someembodiments, user stories may be available on demand for playback. Forexample, when watching a television show or listening to a song, theclient agent may display a list of related user stories received fromthe media provider. Each user story in the list may be associated with acorresponding URL for an item of media content, and the user may selecta user story to retrieve and playback the user story. In anotherembodiment, user stories may be interleaved in a playback streamautomatically.

Dedications may be similar to user stories, and may comprise an audio orvideo recording by a user, associated with an item of media, andtargeted or referring to another user. In one embodiment, a dedicationmay be used by one user to recommend an item of media to a second user.Responsive to recording the dedication, the recommendation service mayadd the item of media to a station for the second user or increase theitem's weight within a station of the second user. The recommendationservice may further add the dedication into a playlist to be playedprior to, subsequent to, or during the playback of the item of mediacontent.

Referring now to FIG. 10A, illustrated is a block diagram of anembodiment of a timeline with an item of media A 1002A and an item ofmedia B 1002B with a gap between them. In one embodiment, the mediaprovider may select a user story 1004, advertisement 1006, or dedication1008 to add to the timeline between the items of media for playback fora user connected to the station. Each user story 1004, or dedication1008 may be selected responsive to an association with the previous orsubsequent item of media 1002A-1002B. In some embodiments, multiple userstories 1004 or dedications 1008 may be inserted into the playlist, bothreferring to a prior item of media, a subsequent item of media, ordifferent items of media. Advertisements 1006 may also be inserted intothe playlist, and may be selected responsive to user preferences, thestation seed, or any other listener demographic targeting information.For example, an advertisement for a season of a television show on DVDmay be inserted into a playlist between two subsequent episodes of thetelevision show, or two subsequent segments of an episode.

Referring briefly to FIG. 10B, in some embodiments, user stories 1004,advertisements 1006, and dedications 1008 may be inserted between itemsof media 1002A-1002B for subsequent playback. Conversely, referring toFIG. 10C, in some embodiments, user stories 1004, advertisements 1006,or dedications 1008 may be provided in a playlist for simultaneousplayback with an item of media 1002A. For example, during a 15 secondintro of a song, a brief user story from the artist about the song maybe played over the intro. Similarly, during a guitar solo in the middleof the song, a user story from a friend of the user may be played, withthe music slightly faded down. In one embodiment, the client agent maycomprise functionality for mixing and/or cross fading between two itemsof media content. In another embodiment, the client agent may comprisefunctionality for detecting a section of an item of media content duringwhich a user story, advertisement, or dedication may be played. Forexample, the client agent may scan ahead of the current playbackposition in an item of media content for silence, a soft section, a fadein or out, a section lacking significant energy in frequenciesassociated with the human voice such as 250 Hz to 2.5 kHz, a section ofvideo with a uniform color, or any other time within the content. Theclient agent may determine the length of such sections, and requestand/or playback user stories, dedications and/or advertisements of equalor lesser duration.

In some embodiments, to keep advertisements short and nonintrusive,advertisements 1006 may be limited in length and a banner may bedisplayed during a subsequent item of media 1002B associated with theadvertisement 1006. This may allow a user to select or click on thebanner to load a website or other material associated with theadvertiser, while allowing the advertisement to be no more than a fewseconds in length.

Referring now to FIG. 11, the media provider and client agent discussedabove allows for a user to provide feedback regarding items of mediacontent played for the user. For example, the user may rate an item ofmedia content up or indicate a positive preference or that they “like”the item. The user may alternately rate an item of media content down orindicate a negative preference or that they “dislike” the item. In someembodiments, an item that is rated up may be moved up within an orderedor weighted playlist or have its score increased, such that the item maybe selected more often. An item that is rated down may be moved downwithin the ordered or weighted playlist or have its score increased,such that the item may be selected less often. In some embodiments, anitem that is rated down may be removed from the playlist entirely. Theuser may also skip the item of media content, or indicate that while theitem should not be removed or rated down, the user does not wish to hearor watch the item at the moment. The user may also play through theentire item of media content, which may implicitly indicate that theuser has a positive preference for the item.

The user's feedback may also be used to rate candidate lists and/orrelated users. For example, the user's feedback may be used to indicatethat a first candidate list of a plurality of candidate lists that aremultiplexed together is highly accurate or includes many preferred itemsof media content for a particular user, while a second candidate list ofthe plurality of candidate lists is inaccurate or includes few preferreditems or many disliked items. Similarly, while the recommendationservice may initially determine that a related user is moderatelysimilar to the requesting user, the recommendation service may increaseor decrease the similarity or matching score based on feedback of therequesting user to items of media content for which the related user hasindicated a preference.

As shown in FIG. 11, in one embodiment, an item may be recommended by afirst candidate list of a plurality of candidate lists. In someembodiments, responsive to a user rating up an item of media 1102, therecommendation service may increase a weight of the first candidate listand the item of media or increase the item's score or position withinthe list. Accordingly, the first candidate list may be relied on moreheavily when using a weighted round robin or similar algorithm formultiplexing the candidate lists.

In another embodiment, responsive to a user rating down an item of media1104, the recommendation service may decrease a weight of the firstcandidate list and the item of media or reduce the item's score orposition within the list or remove the item of media from the candidatelist. Accordingly, the first candidate list may be relied on lessheavily when using the weighted round robin or similar algorithm formultiplexing the candidate lists.

In still another embodiment, responsive to a user skipping an item ofmedia 1106, the recommendation service may increment a skip counter.Responsive to the skip counter exceeding a predetermined threshold, therecommendation service may decrease a weight of the first candidatelist. In one embodiment, the skip counter may be specific to the item ofmedia. In such embodiments, responsive to the skip counter exceeding apredetermined threshold, the recommendation service may decrease aweight of the item of media or decrease the item's score or positionwithin the list.

In yet still another embodiment, responsive to a user playing an item ofmedia through without rating the item 1108, the recommendation servicemay increment a play counter. Responsive to the play counter exceeding asecond predetermined threshold, the recommendation service may increasea weight of the first candidate list. In one embodiment, the playcounter may be specific to the item of media. In such embodiments,responsive to the play counter exceeding a second predeterminedthreshold, the recommendation service may increase a weight of the itemof media or increase the item's score or position within the list.

The systems and methods discussed herein may be utilized to provideitems of media content to users. Additionally, in some embodiments,these systems may be used to provide audio and video contentsimultaneously to a user or device of a user, without interrupting aflow of programming. Typically, internet radio services generally offeronly audio streams of programming. Modern audiences are accustomed tohaving multimedia options available, which in the case of musicgenerally means the addition of music videos.

Streaming video is generally much more expensive to provide for aservice provider than streaming audio. Video generally consumes morebandwidth than audio alone, and bandwidth costs money. Video alsorequires more processing time and storage for servers. In some cases,video may require special licenses for the streaming technologyemployed. Content licensing costs are also generally more expensive thanfor audio streaming. Additionally, there may be no compulsory licenseavailable for streaming music videos as there is for streamingaudio-only internet radio under the DMCA or similar statutes. It is formany of these reasons that typical internet radio services offer onlyaudio.

Consumers may not always want to watch music videos associated withtheir music listening experience. Consuming music video requires greaterbandwidth, which is often paid for by consumers by the megabyte(especially on smart phones) and so may be expensive, or be perceived asexpensive, to the consumer. Watching music video is also processorintensive, and may rapidly decrease battery life in battery operatedclients. Extensive processor use may also heat up a smart phone to thepoint of physical discomfort for a consumer, especially if the device isheld in their hand or stowed in a pocket. Video may also interfere withother tasks that a consumer wants to accomplish on a smart phone,desktop computer, or other client device. Accordingly, there are variousreasons and use cases during which a consumer may want an audio-onlyexperience without music video, even if a music video is available.

Because streaming video generally costs more than streaming audio, aservice that offers streaming video must find some way to support thehigher costs. In an ad-supported model, this generally entails theaddition of advertising inventory associated with the video, for examplepre-roll, post-roll, overlays, and so forth. This advertising inventorycan be sold to advertisers who will pay money in order to have consumersview their advertisements. Other services may use a premium model, whereconsumers pay on a per-view or monthly subscription basis.

One problem with ad-supported music videos is that consumers are notalways watching the video associated with the music. The consumer maysimply have the music video playing, but are only listening, for examplewith headphones connected to a smart phone client that is in theconsumer's pocket. In this case, the consumer will not be fullyinteracting with the advertising being employed to pay for the musicvideo, and therefore the advertising may not be effective enough foradvertisers to buy it at rates that support the service. In a servicelike internet radio, video is often desirable to consumers, but notnecessary for them to use and enjoy it. In an ad-supported model, ifconsumers don't actually use the video portion of the stream, the costof the service is far higher than the cost of a comparable audio-onlyinternet radio service.

Accordingly, the systems and methods discussed here in may be used toprovide an internet radio service that provides both the service and theconsumer with the ability to dynamically enable and disable video duringplayback. In some embodiments, the consumer or user may initially beginlistening to internet radio in audio-only mode. Whenever the userchooses, they may dynamically enable the video portion of the serviceby, in some embodiments, pressing a button or tilting their smart phonein a predefined manner. The video layer may then be dynamically added tothe experience without interrupting the audio entertainment stream. Ifthe user chooses to disable video, this may also happen withoutinterrupting the entertainment stream. In this manner, the consumer canenable video only when desired, and the service can ensure that whenvideo playback is enabled there is an interactive user who will beexposed to advertising associated with the video.

Previous services have offered users a choice between audio-onlyinternet radio and on-demand music video playback. These services sufferfrom several disadvantages when compared with the systems and methodsdiscussed herein Specifically, they do not allow a user to switch intovideo mode spontaneously when, for example, the user hears a song forwhich they are particularly interested in seeing the video. For example,in existing systems, a user may listen to a song and decide they want towatch a corresponding video for the song. Previously, the user wouldhave to load the video separately, frequently via a video streamingservice such as YouTube of San Bruno, Calif., or Vevo, provided byUniversal Music Group and others. As the user may be using a differentaudio provider, such as Pandora or Last.fm, this results in the userhaving to pause the audio playback and search for the video. The usermay retrieve the video, which may start playing back at the beginning ofthe song, regardless of where the user was in the audio playback of thesong. Finally, having watched the video, the user may resume the audioplayback, which may still be playing the song. Accordingly, the userwill frequently have to initiate a skip function. Not only may this skipfunction lower the frequency with which they hear the song, the systemmay not recognize or be able to account for the user viewing the videofor the song. Thus, even though the user preferred the song stronglyenough to wish to watch the video, this preference may be lost.

The service itself may also dynamically enable/disable video based onits ability to know when and whether the consumer is currently in an‘interactive’ mode where they are likely to experience video advertisingas desired by the advertisers. For example, the service could disablemusic video when it detects that it is being played back on a phonewhose display has been turned off. It could require the user to touch abutton every x minutes to indicate they are currently interactive, andif the button is not pressed, video would be disabled. In this manner,the service can avoid streaming video when it is unlikely that the videois being watched by the consumer.

Accordingly, in one embodiment, a client agent may provide thecapability for playback of audio and simultaneous playback of video, orplayback of just the audio. In some embodiments, at a time t duringplayback of a song, the user may select to view the video. The video maybe displayed, starting at time t or shortly after, automaticallysynchronized with the audio. In one embodiment, the user may explicitlyselect to view the video, such as by touching or selecting a view videobutton. In another embodiment, the user may rotate a portable devicefrom portrait mode to widescreen mode, with playback of video beingtriggered by rotation to widescreen mode. Similarly, the user may returnto audio-only mode, either via an explicit selection of a button,rotation of the device to portrait mode, or by the screen of the devicebeing shut off via a lock button or timeout, or, for example, an iPad orother tablet computer cover being closed.

In some embodiments and illustrated in diagrammatic view in FIG. 12A, acontroller may deliver a list of one or more URLs for audio files 1202of a playlist as discussed above, and, for each audio file 1202 in thelist of URLs, may deliver an extended playlist 1204 of video slices orsegments 1206 for playback via a HTTP Live Streaming (HLS) orpseudostreaming protocol. HLS and similar protocols slice a video fileinto a sequence of small segments of, for example, ten seconds or twentyseconds or five seconds or any other duration in length. These files orsegments 1206 may be transferred individually and quickly as filedownloads, taking advantage of HTTP file transfer optimizations within anetwork. The recipient may assemble the files and play them back, and ifdownload speeds are faster than the data rate of the video, may play thefiles back in essentially real-time, after a short delay to fill abuffer.

While playing the audio file 1202, the client agent knows the currentplayback time t. Accordingly, when the user requests to view the video1204 at, for example, 43 seconds into a song, the client agent mayidentify a next segment 1206 in the list of video segments of the songand request download of the segment 1206 and subsequent segments 1206.For example, if the segments are 10 seconds in length, then the clientagent may request the segment starting at 50 seconds into the song, andall subsequent segments. The client agent may receive and buffer thefiles, and start playing the first segment 7 seconds after the requestat 50 seconds into the song, in synchronization with the audio. Inembodiments using slower networks, the client agent may request asegment at a point far enough ahead in playback of the audio to receiveand playback the segment in time and buffer additional segments.Accordingly, the user may seamlessly switch between audio-only and audioand video modes, without interrupting playback.

Referring now to FIG. 12B, and in brief overview, the steps taken in oneembodiment of the system to deliver and display video on demand insynchronization with currently playing audio are illustrated in a flowchart. An audio file may be delivered for playback at step 1210. In someembodiments, a playlist of video segments comprising a video file andcorresponding URLs for each segment may be delivered to the client. Theclient agent may receive a request from the user to initiate playback ofthe video file corresponding to the audio file at step 1212. At step1214, the client agent may identify a current playback location in theaudio file and a next video segment from the current playback location.At step 1216, the client agent may transmit a request to a media serverfor delivery of the identified next video segment and subsequent videosegments of the video playlist.

Still referring to FIG. 12B, and in greater detail, audio media isdelivered for playback at step 1210 using any one of the methodsdescribed above. For example, in one embodiment, a controller maytransmit a URL of an audio file to a client agent, which may request theaudio file from a media server. In some embodiments, the controller mayalso transmit a series of URLs of video file segments 1206 correspondingto the audio file, or may transmit the series of URLs as an M3U playlistor similar playlist. In other embodiments, the controller may transmitthe series of URLs with video file segments 1206 responsive to a requestfrom the client device for the video file URLs or for a video fileassociated with the audio media. In some embodiments, the request mayinclude information about the client device 200 such as screen size orscreen resolution or preferred video format or data rate, and thecontroller may transmit a series of URLs with video file segments 1206transcoded or produced for playback at the specified size, resolution,format, or data rate. In other embodiments, the controller 212 maycollect additional information associated with the request such as thetype of connection over which the request was received (IP, CDMA, GSM,etc.) or the origination location of the request.

At step 1212, during playback of the audio media, the user may indicatea desire to switch to view the video media. In some embodiments this maybe done by selecting a soft button or control on a web page displayed ina browser. For embodiments in which the client device 200 includes anaccelerometer, the user may indicate the desire to switch streams byshaking the client device 200 or by rotating the client device 200 apredetermined number of degrees in a predetermined plane of rotation. Instill other embodiments, the user may indicate this desire by using agesture on the touch screen of the client device 200.

At step 1214, in some embodiments, the client agent may identify acurrent playback location in the audio file, responsive to receiving therequest or identifying the user's desire to switch to view the videomedia. In some embodiments, the client agent may identify the currentplayback location as an absolute timestamp while in other embodimentsthe client agent may identify the current playback location as a valuerelative to a prior point in the file. In some embodiments, the clientagent may identify a video segment in the playlist of video segmentshaving a start time that is near the identified current playbacklocation. In some embodiments the client agent may identify a videosegment with a start time a sufficient amount beyond the currentplayback location to account for transmission delays. In otherembodiments the client agent may identify a video segment with thelowest start time that is greater than the current playback location.

At step 1216, the client agent may retrieve a URL address associatedwith the identified video segment in the playlist, and transmit arequest for the video file at the URL address to a media server. In someembodiments, the client agent may transmit multiple requests or onerequest for multiple files, to request the identified video segment andsuccessive video segments in the video playlist.

Although discussed above in terms of embodiments where the client agenthas the video playlist in advance of the user request to view the video,in other embodiments, the client agent may not have the video playlistin advance. In such embodiments, the client agent may determine oridentify a current playback time of the audio file, and transmit arequest to a controller 212 for the video segments, the requestcomprising the current playback time. In some embodiments, the requestmay further comprise parameters of the device, such as a preferredresolution or screen size or format, or network parameters such aslatency, data rate, or other identifiers. The controller 212 mayidentify the next video segment, as at step 1214 above, and may transmita URL or playlist of URLs for the next video segment and/or successivevideo segments to the client agent. The client agent may then transmit arequest or multiple requests for the video segments to the media server.

When the client agent 202 receives the initial video segment, it maybegin playback of the video media along with playback of the audiomedia. In some embodiments, the video media may include an audiosoundtrack. In such embodiments, the client agent may stop playback ofthe audio file and begin playback of the video file with the audiosoundtrack. In some embodiments, the client agent 202 may delay startingthe playback of the received video media in order to synchronize videoand audio playback. In still other embodiments the client agent maycross fade the audio of the audio file and audio of a soundtrack of thevideo.

As discussed above, by identifying a current time of audio playback, theclient agent may seamless switch between playback of an associated videoand an audio-only mode, without needing to restart playback of theaudio. A similar method and system can be used to extend thesingle-listener station model to a multi-listener, collaborative orshared station, incorporating social listening and interaction. Whileprevious internet radio models have been either non-customizablemulticast streams, or customizable unicast streams, by maintaining atimer and transmitting commands to start playback in the middle of anaudio file, similar to playback of a video file discussed above,multiple users may listen to a customizable playlist simultaneously. Themultiple users may vote media up or down in collaboration, leavecomments for each other, discuss the media, or interact in other ways.Thus, rather than models approximating radio or television broadcastwhere users passively consume media, or models approximating a userlistening to a random collection of compact discs, the systems andmethods discussed herein allow a model approximating a group of friendssitting together, listening to each other's CDs or watching DVDs orthird-party streamed media, discussing the media together, voting tochange channels or skip to a next song, and otherwise provide a moresocial, interactive environment for consuming media.

Referring now to FIG. 13A, illustrated is a timeline view of anembodiment of a playlist for shared listening of a station. At 1304, thestation is inactive, as no listeners are currently connected to thestation. Although created, with a seed in a station database, no mediafrom the station is being played, and the controller does not need tomaintain a timer or playlist. In other embodiments, the station may benot yet created, but created by a first user, as discussed above.

At 1306, a first user may join or create the station. When thecontroller delivers a playlist of one or more URLs for media to thefirst user, the controller may start a local playback timer 1302 for thestation. Playback timer 1302 is similar to a playback timer maintainedby the client to allow switching between audio and audio/video playbackmodes, as discussed above. Playback timer 1302 may, in some embodiments,be reset at the beginning of playback of each file, and may comprise atimer of playback within a media file. In many embodiments, thecontroller does not need to actually play the media file to maintain theplayback timer 1302. Instead, the controller may determine the length ofthe media file, and initiate a timer to be reset at the end time of themedia file.

At 1308, as discussed above, the first user may switch to a combinedaudio/video mode, using a local timer on the first user's device, or bytransmitting a request for a video file to the controller. Inembodiments utilizing the latter technique, the controller may determinea current playback time from playback timer 1302, identify a next videosegment, and transmit a playlist of the next video segment URL andsubsequent video segment URLs to the first user's device for requestingfrom a media server. At 1310, the user may return to audio only mode, asdiscussed above.

At 1312, a second user may join the station. The second user may jointhe station by searching for or identifying the station in a listprovided to the client, discussed above, and selecting to join thestation in group listening mode. In one embodiment, selecting to join astation that is currently active or playing media to another userindicates to join the station in group listening mode. In otherembodiments, the second user may select to join the station in grouplistening mode, or join the station in solo listening mode. In sololistening mode, a separate playlist may be generated for the second userwithout a shared timeline. In embodiments in which the second user joinsin group listening mode, the controller may deliver a playlistidentifying the URL for the current media file and the current playbacktimer value 1302. When the second user's device receives the media filefrom the media server, the device may start playback at the timeidentified by the current playback timer value. Accordingly, the seconduser may join the stream approximately synchronized with the first user,accounting for different network and processing latencies. Suchlatencies may be less than a second, or just a few seconds, negligibleover the course of a multi-minute song or half-hour television show.

Similarly, at 1314, a third user may join the station. As with thesecond user, the third user may receive from the controller a URL forthe current media file and the current playback timer value 1302. Thethird user's device may receive the current media file and initiateplayback at the indicated time, and likewise join in approximatesynchronization with the first and second users.

In many embodiments, the client agent and media provider may provideopportunities for the first, second and third users to interact whileviewing or listening to the shared media. For example, the users maysend text messages to each other about the current song, may discuss thesong in a chat room, may discuss the song in a simultaneous video oraudio chat, rate the song up or down, or otherwise interact with thesong.

As discussed above, in many embodiments, the controller may insertadvertisements, user stories or dedications into the playlist. Tomaintain synchronization, in some embodiments, the same content may bedelivered to each user. However, in other embodiments, the controllermay leverage the additional profile information provided to therecommendation service about each user to provide targetedadvertisements or user stories. To maintain synchronization, in someembodiments, content of the same length may be provided to users. Forexample, at 1316, a first ad, ad 3, may be added to a playlist for afirst user. A second ad, ad 2, may be added to a playlist for the seconduser, with the first ad and second ad being the same length.Accordingly, because the ads are the same length, the first and seconduser may complete playback of their respective ads at approximately thesame time and begin playing the next media file in the playlist.

In another embodiment, content of different lengths may be delivered todifferent users. For example, as shown, a user story of a longer lengthmay be added to a playlist for a third user. To maintainsynchronization, the user story may be set to begin playback during theend of the previous media file or continue during the beginning of thenext media file, and the client agent may mix or cross fade between themedia files and the user story. For example, while the first user viewsa 15 second advertisement, the third user may hear a 25 second userstory from a friend, with 5 seconds at the beginning and end overlappingwith the end of the previous media file and beginning of the next mediafile.

Referring now to FIG. 3B, illustrated is a signal flow diagram of anembodiment of group listening for a customized station. A device of afirst user 1320 may transmit a request 1330 to a controller 1324 for aplaylist. In some embodiments, the controller 1324 may retrieve aplaylist or receive a playlist from a recommendation service, asdiscussed above. The playlist may comprise URLs for one or more items ofmedia to be played. In some embodiments, the playlist may also includean M3U playlist or similar playlist of URLs of video segments to beplayed simultaneously or on demand with audio files. In someembodiments, controller 1324 may start a local playback timer, asdiscussed above. The playback timer may expire at a time equal to theduration of the first item of media to be played, and upon expiration,may be reset with a time equal to the duration of the second item ofmedia to be played. Controller 1324 may transmit the playlist orplaylists to the device of the first user 1320. In some embodiments,responsive to a request to join a station, the controller 1324 may addthe first user to a database of current users listening to or watchingthe station. The controller may maintain this list to determine whichusers to send event notifications related to the station to, or forgenerating advertising targeted to a plurality of users watching orlistening to the station.

Upon receipt of the playlist, the device of the first user 1320 maytransmit a request 1332 to a media server 1326 for the first item ofmedia. In some embodiments, the request 1332 may comprise an HTTP GETrequest for one or more media files. In some embodiments, the request1332 may specify one or more of a format, such as MP3, AAC, MP4, H.264or any other format; a data rate, such as 64 kbps, 128 kbps, 324 kbps,or any other data rate; a resolution, such as 320×480 or 960×640 or anyother resolution; or any other parameters. In some embodiments, therequest 1332 may specify one or more network acceleration techniquesthat a client agent of the client device may use, including compression,TCP pooling or multiplexing, or other techniques. Media server 1326 maytransmit the requested file to the device of the first user 1320, whichmay initiate playback and start a local playback timer. As shown,controller 1324's local playback timer may be offset from the playbacktimer of the device of the first user 1320, responsive to network delaysand processing time.

In some embodiments, while the device of the first user 1320 is playingback the first item of media, a device of a second user 1322 maytransmit a request 1334 to controller 1324 to join the station. Therequest may include the station identifier and may include an indicationthat the second user wishes to join in group listening mode. As withrequest 1330, the controller 1324 may respond to request 1334 with aplaylist of URLs for the currently playing media file, and, in someembodiments, one or more subsequent media files, corresponding videoplaylists or segments, or other information. Controller 1324 may furtherinclude in the response a value for controller 1324's local playbacktimer. As shown, in an embodiment in which controller 1324 responds attime t=75 seconds on local playback timer, the response may include thisvalue to indicate that the device of the second user 1322 should startplaying the first media file at time t=75. As discussed above,responsive to receiving request 1334, the controller 1324 may add thesecond user to a database of users watching or listening to the station.In some embodiments, if a user leaves the station, the client agent ofthe user may send an event notification to the controller 1324indicating the user is no longer watching or listening to the station.In other embodiments, the client agent may periodically query the clientagents to determine if the user is still watching or listening to thestation. If a client agent fails to respond, because, for example, theuser has quit the client application or lost internet connectivity, thecontroller 1324 may remove the user from the list of users currentlyconnected to the station. Accordingly, the controller 1324 may know atall times which users are associated with the group joined to thestation.

The device of the second user 1322 may transmit a request 1336 to themedia server 1326 for the first item of media. In some embodiments,similar to request 1332, the request 1336 may comprise an HTTP GETrequest for one or more media files. In some embodiments, the request1336 may specify one or more of a format, such as MP3, AAC, MP4, H.264or any other format; a data rate, such as 64 kbps, 128 kbps, 324 kbps,or any other data rate; a resolution, such as 320×480 or 960×640 or anyother resolution; or any other parameters. In some embodiments, therequest 1336 may specify one or more network acceleration techniquesthat a client agent of the client device may use, including compression,TCP pooling or multiplexing, or other techniques. Request 1336 may besimilar to request 1332, or may specify different options. For example,the first device may be an Apple iPhone and request an MP4 audio file,and the second device may be an Android smart phone and request an MP3audio file. Media server 1326 may transmit the requested file to thedevice of the second user 1322, which may initiate playback at the timeindicated by the response to request 1334 and start a local playbacktimer at the identified time. In the embodiment shown, because networklatencies and processing times between the device of the first user 1320and device of the second user 1322 may be roughly equal, playback on thedevice of the second user 1322 may be approximately synchronized withplayback on the device of the first user 1320.

In some embodiments, instead of or in addition to a playback timer resetper song, a current time stamp may be used to identify start times andplayback times. For example, the controller may respond to a request1330 with an indication of a current time (e.g. 12:00:00 PM) and aplayback time for the media (e.g. 12:00:00 PM, or a subsequent time toallow time for buffering, such as 12:00:10 PM). The controller may thenrespond to a request 1334 with the current time (e.g. 12:01:15 PM) andthe playback time for the media provided to the first user (e.g.12:00:00 PM), implicitly identifying a current time within the media(e.g. t=75 seconds). Such embodiments may not require a playback timeror transmission of a timer value, instead simply using a currenttimestamp and a logged playback timestamp for the item of media. Timezone differences may be corrected with the controller adjustingtimestamps according to location of the user, or may be ignored. Forexample, the device of the user may calculate start times within themedia based off the difference between the playback timestamp and thecurrent timestamp provided by the controller, and thus not need a localclock to be in synchronization with the clock of the controller.

Additionally, utilizing a current timestamp and a playback starttimestamp allows for pre-buffering of subsequent items of media and/orpreventing downloading of items of media that are almost ending. Forexample, if a second user joins a station or group 15 seconds before asong ends, it may be pointless to have the second user's device connectto a media server and start buffering a song, only to play the finalsecond or two of the song. Instead, the controller may direct the seconduser's device to request a subsequent item of media in the playlist andprovide a current timestamp (e.g. 12:05:00) and a playback start timefor the next item (e.g. 12:05:15). The device may pre-buffer thesubsequent item and be ready to start in synchronization with otherusers' devices. The controller may maintain a time threshold and comparethe remaining duration of an item of media to the threshold to determinewhether to transmit the identification of the current item of media orthe identification of the subsequent item of media.

FIG. 13C illustrates a method for playlist generation and modificationand media selection based on social metadata and user preferences. Acontroller may receive a request for an item of media from a firstdevice at step 1350. The request may include an explicit identificationof an item of media, such as a song or video, or may request a next itemof media from a playlist as discussed above. In such embodiments, themedia controller may select an item of media from a customized mediaplaylist.

At step 1352, the controller may transmit an identification of the itemof media and a playback start time for the item of media. The playbackstart time may be provided via a playback start timer reset for eachitem of media, and/or may be provided via a current timestamp and aplayback timestamp. As discussed above, the identification of the itemof media may include a URL or address of the item of media at a mediaserver, or similar identifier to allow the device to download or streamthe item of media. The controller may store a playback start time forthe item of media, such as in a log, cache, or buffer, or may reset atimer as discussed above.

At step 1354, the controller may receive a second request from a seconddevice for an item of media. The request may explicitly identify theitem of media identified for the first device at step 1352, may be arequest for a current and/or next item of media for a group, station, orroom associated with the first user, or may be a request that identifiesthe first user (e.g. a request to listen to whatever the first user islistening to).

At step 1356, the controller may identify a remaining duration or timeof the item of media. The controller may identify the remaining timebased on a countdown timer or count up timer and the duration of themedia, or may identify the remaining time based on the current time andthe playback start time for the item of media and the duration. Forexample, if the current time is 12:03:00 and playback of a four minutevideo started at 12:00:00, the controller may determine that one minuteof the video remains to be played. The controller may compare theidentified remaining duration or time to a threshold, which may bepredetermined or dynamically determined based on network congestion orresponse time of a media server.

If the remaining time is greater than the threshold amount, then at step1358, the controller may transmit to the second device an identificationof the media and the start time transmitted to the first device at step1352. As discussed above, the identification of the start time may beimplicit via a timer value, or may be explicit and may further identifya current time such that the device may identify an offset point or timein the media to begin playback.

If the remaining time is less than the threshold amount, then at step1360, the controller may transmit to the second device an identificationof a next or subsequent item of media in the playlist and a next starttime. The next start time may be identified based on the time at whichthe currently playing item of media ends.

Accordingly, through the methods and systems described above, multipleusers may simultaneously connect to and listen or view media of acustomized station. Furthermore, in some embodiments, the users maycollaborate on preferences for media on the station. In one embodiment,a first user of the station or user that created the station may bedesignated as the “master” user. In such embodiments, the first user mayrate items of media up or down or skip ahead. Upon each interaction bythe user, the user's client agent may transmit an event notification tothe controller, which may transmit the event notification to the variousother users' devices. Thus, when the master user rates an item of mediaup, the other users will see the corresponding thumb up or otherindicator. Alternately, when the master user rates an item of media downor skips the item, the controller may transmit an event notification tothe other users' devices to stop playing the current item of media andimmediately start playing the next item of media in the playlists,request additional items as necessary, and reset local playback timers.In some embodiments, the controller may also transmit the eventnotification to the master user's device, which may skip to the nextitem of media in response.

In other embodiments, the station may be rated or controlledcollaboratively or democratically. For example, rather than a “master”user, all users may individually rate items of media up or down or voteto skip the item of media. Each user's client agent may transmit acorresponding event notification to the controller, indicating whetherthe user rated the item of media up, whether the user rated the item ofmedia down, whether the user voted to skip the item of media, whetherthe user added a user story or text message to the item of media, orperforms other interactions with the item of media. Unlike a single userlistening model, however, an individual user's rating down of an item ofmedia or selection to skip the item of media may not cause the user'sclient agent to immediately play the next item of media, because thiswould result in desynchronizing the user's client from the other userslistening to the station. Accordingly, in some embodiments, thecontroller may keep track of how many users of a plurality of users haverated a currently playing item of media down or voted to skip the itemof media. In one embodiment, if a predetermined number of users havevoted to skip or rated the item down, the controller may send an eventnotification to each users' client agent to immediately play the nextitem of media. The predetermined number of users may be a number, suchas five users, or may be a percentage of the number of users currentlylistening to or watching the station such as 51%, 66%, 33%, 10%, or anyother number. In some cases, voting may operate on a majority basis,with greater than 50% of users voting down an item of media or voting toskip before the controller sends the event notification. However, insuch cases, up to half of the audience may dislike an item of mediabefore it is skipped, potentially annoying a large portion of the users.Accordingly, in many embodiments, a smaller number of users may berequired to vote to skip an item, such as 25% or 33%.

In another embodiment, a user may vote to skip an item and a request maybe sent to other users in the group or station to confirm, or veto orcancel the skip within a predetermined time period, such as 10 seconds.This may be helpful in instances in which a user is listening to audio,but does not have the application in the foreground and may notrecognize skip requests made by other users, or if a user is temporarilyaway from his or her computing device.

Similarly, a user may also vote to rate an item up. In some embodiments,the controller may keep track of the number of users that have voted theitem up. Although voting an item up does not result in immediatelymoving to the next item of media, the controller may nonetheless keeptrack of the number of positive votes so that the recommendation listfor the station may be dynamically adjusted responsive to userpreferences of the group. As discussed above, the controller may keeptrack of the number of users and, responsive to a predetermined numberor percentage of users rating an item of media up, may adjust the item'sweight within the recommendation list.

In one embodiment, each user's client agent may display a positive ornegative preference meter for the item of media, representing thepercentage of users that have rated the item positively or negatively.As each user rates the item up or down, the controller may send an eventnotification to each client agent to move a corresponding indicator onthe meter towards the positive or negative end of the scale. This mayallow users to see how close an item is to being skipped or removed fromthe playlist.

In some embodiments, the controller may separately keep track of eachuser's individual preferences, even though they are listening to a groupstation. For example, if a user rates an item of media downwards, but isthe only user to do so, the item will not be skipped or removed from thegroup station. Nonetheless, the controller may record the user'sindicated negative preference for the item of media and, if the userjoins the station in single user mode, may weight the item lower orremove the item from the recommendation list.

Although discussed above in terms of users connecting to stationsgenerated by seeds, in one embodiment, a station may be createdresponsive to a mood of a user. For example, rather than identifying aseed, the user may identify a current mood, such as “aggressive” or“happy”. The recommendation engine may use the mood to identify amatching seed and generate a recommendation list. In embodiments usinggroup listening, a mood for a station may be determined dynamicallyresponsive to users connected to the station. For example, a first usermay be identified as “happy” and a second user may be identified as“bluesy”. Accordingly, a recommendation list may be generated withupbeat blues-based songs, such as Elvis or Count Basie.

As discussed above, in some embodiments, the methods and systemsdiscussed herein may be used to provide customized group interaction andplaylist generation responsive to user preferences. Also, as discussedabove, in some embodiments, the systems may incorporate content of auser on a media database of the user local to the user's device, such asan iTunes database or Windows Media database. In a further embodiment,these systems and methods can be combined, providing a music sharingparty experience. Such systems may not require any streaming of media,but rather use an intersection of a plurality of users' media databases.For example, if a first user and second user each have the same 100songs in their media databases, the controller and recommendationservice may generate a playlist using these 100 songs, and provideplaylists to each user's device referencing local files. As discussedabove, each user's device may play the same media simultaneously, andusing the client agent, each user may thumb up or thumb down items ofmedia, discuss the media via a chat room or similar interaction, orperform other social interactions. In some embodiments, additionalcontent, such as advertising or user stories may be added to theplaylist, with the additional content delivered from a media server. Inother embodiments, such as where a first user of a plurality of usersdoes not have an item of media content that the other users of theplurality of users have, while the item is being played to the otherusers, the first user may be offered an opportunity to immediatelypurchase and download the item of media. Accordingly, the socialinteraction and simultaneous delivery systems described herein may belayered on top of a user's existing media database, providing socialnetworking even for systems that were not designed for multiplesimultaneous device interaction.

In addition, playlists for a group or station may be modified responsiveto preferences and/or social metadata of users within the group. Forexample, FIG. 13D illustrates a method for playlist generation andmodification and media selection based on social metadata and userpreferences. As discussed above, at step 1380, a playlist may begenerated for a first user based off a seed, which may be selected,extracted, or otherwise generated using any of the methods discussedherein. The first user may be considered the “owner” or creator of thestation. In some embodiments, only the owner of a station may add,delete, or modify seeds.

When a user joins the station or group listening environment at step1382, the media provider may retrieve social metadata and preferencesfor the user from a social networking site and/or from internal recordsabout the user at step 1384. For example, the user may have “liked” anartist on Facebook, or may have rated an artist negatively whenpreviously presented to the user by the media provider. Similarly, usingthe methods discussed above, likely preferences for the user may begenerated from social network metadata such as relationships to otherusers with explicit preferences. In many embodiments, the user joiningat step 1382 may be the first user or the station owner, while in otherembodiments, the first user may already have joined the station and asecond user may join. In still other embodiments, the station owner neednot ever join the station. For example, a station may be created by anartist to highlight their work, but they may not necessarily ever jointhe station. Accordingly, the user joining at 1382 may be a first userto actually join the station.

At step 1386, the playlist may be modified based on the additionaluser's preferences or metadata. For example, an artist, song, video, oralbum may be removed from the playlist responsive to the user havingindicated a negative preference for the media. Similarly, an artist,song, video, or album may be moved up within the playlist, responsive tothe user having indicated a positive preference for the media. Artists,songs, videos or albums may also be added to the playlist responsive tothe user having indicated a positive preference, and the media beingsimilar to or compatible with the artist seed or media within theplaylist. Thus, a second user's preferences may expand the playlistwhile still maintaining compatibility with the first user's seed andpreferences.

The media provider may filter and reorder the playlist for a station,room, or group by utilizing user data, preferences, social networkmetadata, and explicit ratings of all users in the room. The mediaprovider also may apply one or more business rules to a playlist, basedon license requirements or other rules, such as removing items of mediaselected more than a predetermined number of times within a time period(e.g. twice per hour, or four times per day).

The media provider may merge or sum preferences of users in the group,such as identifying each artist that a user has indicated a preferencefor (e.g. a Facebook “like”) and creating a tally of the number of usersper artist that have made the indication. Such user information may bestored as tuples identifying the user, artist, and positive or negativepreference. Similarly, the media provider may identify artists thatusers implicitly prefer, based on their explicit preferences for itemsof media by the artist. For example, if a user rates an item of media byan artist positively, the media provider may increment a rating value ina tuple of the user, artist, and rating value. Conversely, if the userrates the item of media negatively, the media provider may decrement therating value. Such ratings may be stored as tuples, data fields,strings, counters, or via other data formats. These implicit ratings foreach artist by each user may be summed, and may further be summed withthe tally of users explicitly indicating a preference for an artist togenerate an overall artist rating for the group or station, for eachartist. The rating values for each artist may be compared to one or morethresholds. For example, artists with a group rating above a positivethreshold may be identified as “loved artists,” while artists with agroup rating below a negative threshold may be identified as “hatedartists.” Although referred to as positive and negative, both thresholdsmay be positive numbers and thus “positive” may refer to the higherthreshold. Given this group rating of artists and categorization, themedia provider may modify the playlist by selecting the subset of itemsof media by “loved artists”, concatenated with items that are by artistswith values between the positive and negative thresholds (i.e. neither“loved” nor “hated”) and may filter out items of media by “hatedartists”. Thus, the resulting modified list may include items of mediaby artists that are not disliked by users, ordered by rating. In someembodiments, if the resulting number of items of media is less than apredetermined value, the media provider may not filter the results. Thismay prevent a playlist from being completely emptied due to incompatibleuser preferences in a group.

Similarly, the media provider may merge or sum preferences of users forindividual items of media. For example, rather than explicit preferencesfor artists, the media provider may tally explicit preferences for itemsof media (such as a song for which a user has indicated a Facebook“like”). The media provider may tally such explicit preferences fromsocial network sites, as well as explicit preferences or ratings withinthe media system (e.g. positive or negative ratings of songs or videos)to great a group rating value for each item of media. Such ratings maybe compared to positive and negative thresholds, as above, to classifyliked or disliked items of media. As above, items of media may beselected and concatenated to or filtered from the playlist based ontheir group ratings to generate a modified list of items of media thatare liked or not disliked by users, in order of user ratings. As above,if the resulting number of items of media is less than a predeterminedvalue, the media provider may not filter the results.

To select items of media, the media provider may iteratively select atrandom from the modified list, using a distribution that weights towardsthe beginning of the list, resulting in items that users prefer or thatare by artists that users prefer being selected more often.Additionally, to ensure that at least one item of media by a seed artistis selected frequently, such an item of media by the seed artist orartists may be moved to the beginning of the list. Similarly, the mediaprovider may select an item of media by an artist associated with thegroup or station. For example, if a station is generated based around anartist, an item of media by the artist may be moved to the top of thelist to ensure that it's selected most often, regardless of other seedsand user preferences.

In a similar embodiment, an artist or item of media may be moved to thetop of the list based on a request of a user joining the station orgroup. For example, a user may search for a station or group with aplaylist or recommendation list that includes a specified artist, suchas Van Halen, or a specified song, such as Jump. The media provider mayreturn a list of stations that include said artist or item of mediawithin their recommendation lists, which may include a station with theartist or item of media as a seed, but could also be other stations. Forexample, not only may the media provider respond to the search withidentification of a station with a seed of Van Halen, it may alsorespond with identification of a station with a seed of Aerosmith, thathappens to include Van Halen among its compatible or similar artists. Ifthe user selects to join the Aerosmith station, the media provider maymodify the playlist to move an item of media by Van Halen to the top ofthe priority list for selection, such that the likely first item ofmedia that is selected will correspond to the user's search query(subject to the requirements of business rules or whether that item ofmedia happened to have been recently selected prior to the user joiningthe station). The search query may be referred to as a “hint” indicatingthe user's preference, and the artist or item of media may be referredto as a “hinted artist” or “hinted item of media.” Accordingly, amodified playlist may include a hinted artist in a top position, a seedartist in a subsequent position, and liked or not disliked similarartists in subsequent positions.

Steps 1382-1386 may be repeated as additional users join the station orgroup. Metadata and preferences of current users in the group or stationmay be re-retrieved at step 1384, or may be stored or cached to reducenetwork or processing requirements. At step 1388, if a user leaves thestation or group, steps 1384-1386 or step 1386 may be repeated with thepreferences of the remaining users. Thus, as users join or leave, theplaylist for the group or station may be dynamically adjusted to ensurethat media selections are compatible with the preferences of all currentusers.

It should be understood that the systems described above may providemultiple ones of any or each of those components and these componentsmay be provided on either a standalone machine or, in some embodiments,on multiple machines in a distributed system. The systems and methodsdescribed above may be implemented as a method, apparatus or article ofmanufacture using programming and/or engineering techniques to producesoftware, firmware, hardware, or any combination thereof. In addition,the systems and methods described above may be provided as one or morecomputer-readable programs embodied on or in one or more articles ofmanufacture. The term “article of manufacture” as used herein isintended to encompass code or logic accessible from and embedded in oneor more computer-readable devices, firmware, programmable logic, memorydevices (e.g., EEPROMs, ROMs, PROMs, RAMs, SRAMs, etc.), hardware (e.g.,integrated circuit chip, Field Programmable Gate Array (FPGA),Application Specific Integrated Circuit (ASIC), etc.), electronicdevices, a computer readable non-volatile storage unit (e.g., CD-ROM,floppy disk, hard disk drive, etc.). The article of manufacture may beaccessible from a file server providing access to the computer-readableprograms via a network transmission line, wireless transmission media,signals propagating through space, radio waves, infrared signals, etc.The article of manufacture may be a flash memory card or a magnetictape. The article of manufacture includes hardware logic as well assoftware or programmable code embedded in a computer readable mediumthat is executed by a processor. In general, the computer-readableprograms may be implemented in any programming language, such as LISP,PERL, C, C++, C#, PROLOG, or in any byte code language such as JAVA. Thesoftware programs may be stored on or in one or more articles ofmanufacture as object code.

While various embodiments of the methods and systems have beendescribed, these embodiments are exemplary and in no way limit the scopeof the described methods or systems. Those having skill in the relevantart can effect changes to form and details of the described methods andsystems without departing from the broadest scope of the describedmethods and systems. Thus, the scope of the methods and systemsdescribed herein should not be limited by any of the exemplaryembodiments and should be defined in accordance with the accompanyingclaims and their equivalents.

1. A method for generating customized media playlists, comprising:receiving, by a media server from a device of a first user, a request togenerate a customized media playlist, the request including anidentification of a first seed artist; requesting, by the media serverfrom a recommendation server, a first media list of media of the firstseed artist; requesting, by the media server from the recommendationserver, a second media list of media compatible with the first seedartist; requesting, by the media server from the recommendation server,a third media list of media compatible with one or more items of thefirst media list; merging, by the media server, the first media list,second media list, and third media list to generate a fourth media list;selecting, by the media server, an item of media from the fourth medialist; and transmitting, by the media server to the device of the firstuser, an identification of the selected item of media from the fourthmedia list.
 2. The method of claim 1, further comprising modifying thefourth media list responsive to a positive or negative rating of an itemof media in the fourth list by the first user.
 3. The method of claim 1,wherein requesting the third media list further comprises requesting thethird media list of media compatible with one or more items of the firstmedia list and a second one or more items of media positively rated bythe first user.
 4. The method of claim 3, wherein the second one or moreitems of media positively rated by the first user comprise one or moreitems of a previously generated customized media playlist.
 5. The methodof claim 1, wherein requesting the third media list further comprisesrequesting the third media list of media compatible with one or moreitems of the first media list selected in order from the first medialist.
 6. The method of claim 1, wherein selecting the item of media fromthe fourth media list further comprises filtering the list to remove oneor more recently selected items of media, responsive to one or morebusiness rules.
 7. The method of claim 1, wherein selecting an item ofmedia from the fourth media list further comprises: receiving, by themedia server, an identification of a second user to receive theidentification of the selected item of media from the fourth media list,and modifying the fourth media list, by the media server, responsive toa combination of preferences of the first user and second user; andfurther comprising transmitting an identification of the selected itemof media from the fourth media list to a device of the second user. 8.The method of claim 7, wherein modifying the fourth media listcomprises: retrieving positive and negative ratings of artists by eachof the first user and second user; merging positive and negative ratingsfor each artist from the retrieved ratings to generate a combined scorefor each artist; comparing each combined score to a threshold; andmodifying the fourth media list to remove items of media by artists withcombined scores below the threshold.
 9. The method of claim 7, whereinmodifying the fourth media list comprises: retrieving positive andnegative ratings of items of media by each of the first user and seconduser; merging positive and negative ratings for each item of media fromthe retrieved ratings to generate a combined score for each item ofmedia; comparing each combined score to a threshold; and modifying thefourth media list to remove items of media with combined scores belowthe threshold.
 10. The method of claim 1, wherein selecting an item ofmedia from the fourth media list further comprises modifying the list toinclude in a first position an item of media by the first seed artist.11. A system for generating customized media playlists, comprising: afirst device comprising a media server, in communication with a deviceof a first user, the first device configured for: receiving, from thedevice of the first user, a request to generate a customized mediaplaylist, the request including an identification of a first seedartist; requesting, from a recommendation server, a first media list ofmedia of the first seed artist; requesting, from the recommendationserver, a second media list of media compatible with the first seedartist; requesting, from the recommendation server, a third media listof media compatible with one or more items of the first media list;merging the first media list, second media list, and third media list togenerate a fourth media list; selecting an item of media from the fourthmedia list; and transmitting, to the device of the first user, anidentification of the selected item of media from the fourth media list.12. The system of claim 11, wherein the first device is furtherconfigured for modifying the fourth media list responsive to a positiveor negative rating of an item of media in the fourth list by the firstuser.
 13. The system of claim 11, wherein the first device is furtherconfigured for requesting the third media list of media compatible withone or more items of the first media list and a second one or more itemsof media positively rated by the first user.
 14. The system of claim 13,wherein the second one or more items of media positively rated by thefirst user comprise one or more items of a previously generatedcustomized media playlist.
 15. The system of claim 11, wherein the firstdevice is further configured for requesting the third media list ofmedia compatible with one or more items of the first media list selectedin order from the first media list.
 16. The system of claim 11, whereinthe first device is further configured for filtering the list to removeone or more recently selected items of media, responsive to one or morebusiness rules.
 17. The system of claim 11, wherein the first device isfurther configured for: receiving an identification of a second user toreceive the identification of the selected item of media from the fourthmedia list; modifying the fourth media list, responsive to a combinationof preferences of the first user and second user; and transmitting anidentification of the selected item of media from the fourth media listto a device of the second user.
 18. The system of claim 17, wherein thefirst device is further configured for: retrieving positive and negativeratings of artists by each of the first user and second user; mergingpositive and negative ratings for each artist from the retrieved ratingsto generate a combined score for each artist; comparing each combinedscore to a threshold; and modifying the fourth media list to removeitems of media by artists with combined scores below the threshold. 19.The system of claim 17, wherein the first device is further configuredfor: retrieving positive and negative ratings of items of media by eachof the first user and second user; merging positive and negative ratingsfor each item of media from the retrieved ratings to generate a combinedscore for each item of media; comparing each combined score to athreshold; and modifying the fourth media list to remove items of mediawith combined scores below the threshold.
 20. The system of claim 11,wherein the first device is further configured for modifying the list toinclude in a first position an item of media by the first seed artist.